12.07.2012 17:33, Anton Yuzhaninov пишет: > On 07/12/12 13:20, Andrey Lyubimets wrote: >> # uname -iorp >> FreeBSD 8.3-RELEASE i386 VPNS > > 1. Если есть возможность - поставить amd64 и то что написано ниже можно будет > не читать. два центральных сервера я заменю в ближайшем будущем, поставлю amd64. Сейчас там железо -P4-2.4GHz/1G, но у меня еще 40 тазиков -- на самых слабых -- celeron 566MHz/128M. Мне проще на шестёрку назад откатиться. Специально зашел на такую слабую машинку -
#sysctl -a | grep kmem vm.kmem_map_free: 11612160 vm.kmem_map_size: 29151232 vm.kmem_size_scale: 3 vm.kmem_size_max: 335544320 vm.kmem_size_min: 0 vm.kmem_size: 40878080 #top last pid: 75016; load averages: 0.06, 0.01, 0.00 up 26+14:49:15 11:19:49 17 processes: 1 running, 16 sleeping CPU: 9.1% user, 0.0% nice, 0.0% system, 0.0% interrupt, 90.9% idle Mem: 11M Active, 10M Inact, 43M Wired, 22M Buf, 53M Free Swap: #uptime 11:20AM up 26 days, 14:49, 1 user, load averages: 0.00, 0.00, 0.00 Судя по vm.kmem_map_free до паники проработает ещё минимум недельку. > > 2. Скорее всего память не течет, а просто 8-ка кушает немного больше памяти, > чем 6-ки этого хватило чтобы вылести за имеющийся лимит. > > Для начала стоит отдать ядру больше памяти. Под i386 адресное пространство > маленькое и нужно либо хорошо разбираться в во внутреннем устройстве или > подбирать параметры методом проб и ошибок (при неправильных значенриях > паниковать может прямо при загрузке). > > Для начала пересобрать с > options KVA_PAGES=512 > > (это поделит адресное пространство 4 Gb как 2Gb+2Gb - по умолчанию 1 Gb для > ядра и 3 Gb для userspace). > > Далее нужно постепенно увеличивать лимит физичесокй памяти отдаваемой ядру > /boot/loader.conf: > vm.kmem_size=1G > > Почтепенно, потому что если написать слишком большое значение, то будет > паниковать, и возможно прямо при загрузке (полезно иметь под рукой KVM, ipmi > sol или просто serial в соседний сервер). > > Еще можно немного сэкономить KVA/памяти уменьшив эти значения: > kern.ipc.maxpipekva=4M > kern.maxbcache=16M # (это не объем закэшированных данных, а объем текущих > данных в текущих I/O операций, так что если нагрузка на ФС небольшая можно > ставить маленькие значения > -http://www.freebsd.org/doc/en/books/arch-handbook/vm-fileio.html) > > 3. Если даже после этих действий паники kmem_map too small не исчезли - > смотреть что кушаем память. Писать по крону vmstat -mz и после паники изучать > последний. Еще можно включить запись корок и запускать vmstat на этих корках. > спасибо, попробую ваши рекомендации. А почитать про переменные vm.kmem_* это man что? или в исходники надо лезть? -- С уважением, Любимец Андрей Алексеевич
