Есть роутер плюс сетевое хранилище на FreeBSD 8.0, стоит на атоме, винчестер WD Green 1.5Tb. Проблема состоит в следующем. Бывает иногда, почти регулярно, получаю зависшую систему, на экране и в логах вижу следующее:Aug 19 17:36:02 xmityabsd syslogd: kernel boot file is /boot/kernel/kernel
Aug 19 17:36:02 xmityabsd kernel: panic: kmem_malloc(4096): kmem_map too small: 165650432 total allocated
Aug 19 17:36:02 xmityabsd kernel: cpuid = 0
Aug 19 17:36:02 xmityabsd kernel: Uptime: 3d18h36m32s
Aug 19 17:36:02 xmityabsd kernel: Cannot dump. Device not defined or unavailable.
Aug 19 17:36:02 xmityabsd kernel: Automatic reboot in 15 seconds - press a key on the console to abortТ.к. система не отвечает я машину сбрасываю. После перезагрузки винчестер, конечно на месте. Всего раз было так, что и биос его не видела. Думал виноват болтающийся шлейф - заменил, повторилось снова, прошивка биоса стоит родная (мать D510MO). Последний раз произошло, когда с ноута что-то качал. Даже не знаю куда смотреть и что попробовать, последний раз система проработала без сбоев почти 4 дня. Не подскажите в чем может быть дело?
>Aug 19 17:36:02 xmityabsd kernel: panic: kmem_malloc(4096): kmem_map too small: 165650432 >total allocatedОчевидно же, что процесс превышает лимиты размеров в памяти
В /boot/loader.conf добавить строки:
kern.dfldsiz="1073741824"
kern.maxdsiz="1073741824"
kern.maxssiz="134217728"и перегрузить.
Спасибо большое, надеюсь поможет!))
>[оверквотинг удален]
>
>Очевидно же, что процесс превышает лимиты размеров в памяти
>
>В /boot/loader.conf добавить строки:
>
>kern.dfldsiz="1073741824"
>kern.maxdsiz="1073741824"
>kern.maxssiz="134217728"
>
>и перегрузить.Все сделал, опять повторяется:
Aug 22 10:21:20 xmityabsd syslogd: kernel boot file is /boot/kernel/kernel
Aug 22 10:21:20 xmityabsd kernel: panic: kmem_malloc(4096): kmem_map too small: 165650432 total allocated
Aug 22 10:21:20 xmityabsd kernel: cpuid = 2
Aug 22 10:21:20 xmityabsd kernel: Uptime: 1d23h12m31s
Aug 22 10:21:20 xmityabsd kernel: Cannot dump. Device not defined or unavailable.
Aug 22 10:21:20 xmityabsd kernel: Automatic reboot in 15 seconds - press a key on the console to abort
Aug 22 10:21:20 xmityabsd kernel: Rebooting...На этот раз хоть не зависает. И почему ядро не убивает процесс, который заполнил отведенный ему предел? И из чего исходить при установке этих лимитов? Спасибо.
>Aug 22 10:21:20 xmityabsd kernel: cpuid = 2Правда теперь тут третий процессор...
>>Aug 22 10:21:20 xmityabsd kernel: cpuid = 2
>
>Правда теперь тут третий процессор...Напишите скрипт, который раз в минуту сохраняет в файл содержимое
sysctl -a
и
netstat -mЗапустите, и пусть машинка снова зависнет. И проанализируйте состояние переменных после старта и перед отказом. Сразу обнаружите узкое место.
>На этот раз хоть не зависает. И почему ядро не убивает процесс,
>который заполнил отведенный ему предел? И из чего исходить при установке
>этих лимитов? Спасибо.Потому что это не процессу, а ядру не хватает памяти. Вам нужно ограничть размер KVM, т.к. он скорее всего больше, чем размер физической памяти. И делать это нужно не "от балды" подставляя числа, а исходя из того сколько у вас RAM.
Добавьте в ваш /boot/loader.conf
vm.kmem_size="512M"
vm.kmem_size_max="512M"Только вместо 512 проставьте соответствующие числа. Примеры можно посмотреть тут:
http://wiki.freebsd.org/ZFSTuningGuide
Спасибо за советы, но после часов гугла и наблюдения за системой проблема оказалась в том, что память медленно, но верно перетекает из free в wired, что уже обсуждалось в одной из веток этого форума:http://bsd.opennet.ru/openforum/vsluhforumID1/87589.html?n=Nick
И в ней приводят багрепорт, в котором вроде бы исправили эту ошибку:
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/144564
Вопрос вот в чем, возможно ли мне просто обновить ядро версии 8.0 на такое же, только пропатченное без пересборки мира? Нигде так делать не рекомендуется. В релизах сейчас 8.1, его будет cvsup качать?
Спасибо всем огромное, проблема решена! После обновления ядра вся память теперь на месте.