Когда (по крайней мере вывод GNU)grep
не является терминалом, он буферизует свой вывод, что и вызывает поведение, которое вы видите. Вы можете отключить это либо с помощью опции GNU grep
--line-buffered
:
.
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep --line-buffered LINE | cat
или утилита stdbuf
:
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | stdbuf -oL grep LINE | cat
Отключить буферизацию в канале содержит дополнительную информацию по этой теме.
Небольшой объем подкачки (1 ГБ — это мало по сравнению с 32 ГБ ОЗУ ), используемыми целиком — это нормально. Это означает, что в точности так, как это описал администратор виртуальной машины :, учитывая доступность ОЗУ, все, что попадает в подкачку, не используется, и лучше оставить это там и использовать соответствующую физическую память для более неотложных целей — будь то активные рабочие нагрузки., или дисковый кеш.
Чрезмерное использование подкачки вызывает беспокойство только в том случае, если объем подкачки велик или если страницы подкачиваются из-за нехватки памяти, и, что более важно, если операция подкачки важна, т.е. ], если vmstat
показывает, что страницы постоянно заменяются. Это указывает на то, что система работает с перебоями, тратя время на удаление страниц только для того, чтобы снова загрузить их обратно; это происходит, когда объем оперативной памяти слишком мал для рабочей нагрузки системы.
Система, на которой я пишу это, имеет немного больше подкачки и находится в той же ситуации, что и ваша виртуальная машина:
$ free -m
total used free shared buff/cache available
Mem: 32054 19405 1098 2365 11550 9827
Swap: 6410 6410 0
Интерактивная производительность в порядке, а vmstat
не показывает никаких операций подкачки.