Опкод кешеры

MiksIr

miksir@home:~$
А соверменные опкод кешеры (apc, opcache) копируют кеш в рабочий процесс или же напрямую из шаренного участка исполняется? Там же r/o, вполне можно было бы.
 

WMix

герр M:)ller
Партнер клуба
как бы там нибыло в ОЗУ ничего не исполняется, память процессу была выделена до того как он понял что он пхп и что у нег есть cache, а дальше все будет читаться в процессоре инструкция за инструкцией перед исполнением, записывая и промежуточные значения, и разворачиваясь в алгоритмы (процессор врятли понимает команду ereg_replace) в свой swap, и заного считывая эти значения или алгоритмы из swap для выполнения.

или задай вопрос иначе...
 
Последнее редактирование:

Breeze

goshogun
Команда форума
Партнер клуба
А соверменные опкод кешеры (apc, opcache) копируют кеш в рабочий процесс или же напрямую из шаренного участка исполняется? Там же r/o, вполне можно было бы.
ты себе как представляешь 128М кеша на каждый процесс?
 

MiksIr

miksir@home:~$
Пля. Опкод кешер имеет в шаред мемори кеш опкодов скриптов. Опкод кешер перехватывает запрос на загрузку файла.
Что дальше - опкод кешер копирует опкод запрошенного скрипта в память рабочего процесса или же он дает ссылку на участок шареной памяти, и рабочий процесс читает и исполняет код прямо оттуда.

Т.е. говоря другим языком.
Есть скрипт, опкод которого занимает 10мб, уже в кеше.
Есть 100 рабочих процессов, которые этот скрипт исполняют. Память будет занято 10мб или 100 * 10 + 10?
 

WMix

герр M:)ller
Партнер клуба
Есть скрипт, опкод которого занимает 10мб, уже в кеше.
Есть 100 рабочих процессов, которые этот скрипт исполняют. Память будет занято 10мб или 100 * 10 + 10?
нет!, может и больше, может и меньше, наверняка найдутся инструкции которые скажут скопируй этот кусок отсюда туда. но все динамично, база новая, файлы другие, meta свое.
 

fixxxer

К.О.
Партнер клуба
shared memory - это сегменты относительно небольшого размера со специальным апи для доступа, нельзя просто взять и передать указатель
 

fixxxer

К.О.
Партнер клуба
Его можно подсоединить к своему адресному пространству.
Учитывая, что в том же zend opcache есть аж 4 способа кэширования, не думаю, что так просто все, хотя фиг знает, я не смотрел реализацию.

Ну вот глянь https://github.com/zend-dev/ZendOptimizerPlus, и сам разберешься и нам расскажешь =)
 
Сверху