Назад | Перейти на главную страницу

«Бесплатная» интерпретация PHP APC и Linux

Насколько я понимаю, вывод free заключается в том, что значения буфера / кеша являются истинным отражением доступной памяти.

Я назначил 512 МБ кешу кода операции PHP APC, и хотя он использует все это, вывод free остается прежним.

Я знаю, что проблема заключается в моем понимании (или отсутствии такового) управления памятью. Может кто-нибудь дать мне некоторое представление об этом?

ОБНОВИТЬ:

Мое понимание памяти пришло из изучения сборки, которую я проделал. Я не знаю (по крайней мере, мне кажется), как ядро ​​Linux управляет памятью.

После публикации вопроса я читал больше, и я понимаю, что на самом простом уровне они соответствуют их названиям: кеш - это файлы ядра, зеркалирующие файлы в ОЗУ для более быстрого доступа, а буферы - это временные биты информации, используемые отдельными лицами. процессы.

APC работает (512 МБ полностью загружены):

              total       used       free     shared    buffers     cached
Mem:           1498       1452         46          0         36        796
-/+ buffers/cache:         619        879

Сразу после перезапуска PHP FPM с отключенным APC:

              total       used       free     shared    buffers     cached
Mem:           1498        776        721          0         36        285
-/+ buffers/cache:         454       1043

Игнорирование пространства подкачки, поскольку оно осталось неизменным:

Первая строка имеет для меня смысл, память освобождается как от APC (512M), так и от рабочих PHP (721-46-512 = 163M). Память, выделенная для кеша, больше не имеет APC и уменьшается на 796-285 = ~ 512 МБ (или это просто совпадение?).

Меня смущает вторая строчка. Являются ли эти числа только тем, сколько ядро ​​зарезервировало для буферов, а остальное выделено для кэширования, даже если фактически не используется в настоящее время? Это имело бы смысл, потому что оно падает на ту же величину, которую я рассчитал, как используемую PHP, отражая работников PHP.

Если я прав, то возникает другой вопрос. Что отражают «буферы» в первой строке?

              total       used       free     shared    buffers     cached
Mem:           1498        776        721          0         36        285
-/+ buffers/cache:         454       1043

Вторая строка, 454 = используется (776) - (буферы (36) + кешируются (285))

1043 = бесплатно (721) + (буферы (36) + кэшированные (285))

Значения будут приблизительными.

Что такое буфер?

https://stackoverflow.com/questions/6345020/linux-memory-buffer-vs-cache