Различие между свободным-m и PS-euf

Я не знаю наверняка, так как я не один из разработчиков выбора (), но я сказал бы, что это - оптимизация производительности. Функция вызова знает, сколько дескрипторов файлов она вставила чтение, запишите и кроме FDs, итак, почему ядро должно понять это снова?

Помните, что в начале 80-х, когда выбор () был представлен, у них не было multi-gigaghertz, многопроцессорные системы для работы с. VAX на 25 МГц был довольно черт побери быстр. Плюс, Вы хотели, чтобы выбор () работал быстро, если он мог: если некоторый ввод-вывод ожидал процесса, почему заставляют процесс ожидать?

6
18.03.2019, 05:04
2 ответа

Буферы и кэш динамично измерены. Если для процессов нужно больше пространства, то оно взято от буферов и кэша.

Ключ должен посмотреть на вторую строку (" - / + буферы/кэш").

Mem:           496        489          6          0          4        452
-/+ buffers/cache:         33        462

Заметьте, что свободной во второй строке (462) является сумма 6 (свободный), 4 (буферы) и 452 (кэшируемый). Это - реальное количество свободного пространства. Если бы это падает слишком низко, то система начала бы подкачивать процессы из памяти к области подкачки.

Так в действительности Вы используете 33 МБ памяти и имеете доступные 462 МБ - вероятно, немного меньше, так как Вам все еще были бы нужны некоторые буферы для i/o.

10
27.01.2020, 20:23

Кроме корректного объяснения Arcege, существует также два других неправильных представления, скрытые в Вашей интерпретации ps euf.

  1. Команда ps euf не перечисляет все процессы - необходимо использовать ps axeuf для этого.

  2. Проценты используемой памяти для каждого процесса даны, как Вы видите, округленный к 0.1%. Так складывание их даст ошибочные результаты - (примерно) все процессы используют некоторую память - даже если это меньше затем 0.1%. Если существуют, например, 20 процессов то использование 0.05%, они составили бы в целом 1%, нет 0%.

4
27.01.2020, 20:23

Теги

Похожие вопросы