В настоящее время я использую один узел кластерных вычислений графического процессора на Amazon EC2, который, как указано, имеет 22 ГБ ОЗУ на каждый экземпляр. top
подтверждает, что в экземпляре действительно есть 22 ГБ ОЗУ, но в неактивных системах постоянно используется 5-6 ГБ ОЗУ. Ни то, ни другое top
ни ps aux
может идентифицировать процессы, к которым относится это использование.
5-6 ГБ мне кажутся слишком большими для ОС, но, возможно, я ошибаюсь. Могут ли это быть накладные расходы из-за виртуализации на Amazon? Есть ли другие идеи или предложения относительно того, как я могу это отследить?
Причина, по которой вы видите, что используется значительный объем памяти, заключается в том, что Linux использует большую ее часть для кэширования файлов.
Это, вероятно, прояснит вам ситуацию:
Когда ты смотришь на верхняясвободная память, которую вы видите, является значением до кэширования ядра.
top - 12:59:25 up 1 day, 15:47, 5 users, load average: 0.04, 0.10, 0.12
Tasks: 161 total, 1 running, 160 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.5%us, 1.8%sy, 0.0%ni, 94.2%id, 0.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 3985464k total, 3369908k used, 615556k free, 752964k buffers
Swap: 1951740k total, 12k used, 1951728k free, 1439160k cached
У моего ноутбука 3985464 килобайт общей памяти. Но ядро linux будет кэшировать большую часть этого внутренне, поэтому верхняя показывает только 619748 КБ свободной памяти. Но если вы посмотрите на это с помощью свободно вы понимаете, что на самом деле большая часть памяти доступна ... в кеше.
$ free
total used free shared buffers cached
Mem: 3985464 3365716 619748 0 752796 1439152
-/+ buffers/cache: 1173768 2811696
Swap: 1951740 12 1951728
Реальная свободная память указана на буферы / кеш линия.
total used free shared buffers cached
-/+ buffers/cache: 1173768 2811696
В этой машине 2,8 ГБ свободной памяти.