У нас есть пара серверов с 20-30 ГБ оперативной памяти, на которых работает (вариант) RHEL4. В настоящее время они используют ядро SMP i386, а не x64 и даже ядро hugemem. Это означает, что LowMem ограничен размером <1 Гбайт, и, следовательно, dentry_cache и ext3_inode_cache до 100 Мбайт или около того каждый. Как я могу определить, что это проблема?
Вот типичный отчет vmstat во время компиляции Java:
$ vmstat 10
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 1 0 19493816 394740 922420 0 0 1058 2292 1491 1020 6 3 80 12
2 1 0 19519480 395244 850156 0 0 1179 1412 1329 1195 9 4 75 12
1 1 0 19557368 392616 828344 0 0 1783 1680 1498 1756 14 5 72 9
Мне не нравится способ bi
отличен от нуля, когда так много свободной памяти. Я полагаю slabtop
мог бы указать более прямо на проблему, но я действительно не понимаю, как интерпретировать его результат.
Обновить: Возникает очевидный вопрос: «Почему бы не перейти на x64», у Google даже есть много ссылок на «64-битное ядро 32-битного пользователя». Но основная цель этих машин - создавать 32-битное программное обеспечение, и я не знаю, как гарантировать, что на него не повлияет переключение ядер.
Я не думаю, что PAE может вам навредить, но с таким объемом памяти почему бы не перейти на 64-битную систему.
http://linux-mm.org/
Вы можете узнать больше о vmstat здесь:
http://www.helpmehost.com/linux/reading-vmstat-in-linux-part-1/ (и часть 2)
Почему бы не сар на такое расследование?