В больших системах Linux, работающих под управлением Centos, мы иногда видим такие сообщения, как
kernel: <program_name>: page allocation failure: order:<N>, mode:0xNNNN
Чтение подобных статей:
https://utcc.utoronto.ca/~cks/space/blog/linux/DecodingPageAllocFailures
https://utcc.utoronto.ca/~cks/space/blog/linux/WhyPageAllocFailure
похоже, что эти сообщения в основном являются ложными предупреждениями, вызванными неправильной логикой проверки памяти в ядре.
Я понимаю, что сообщения типа "порядок: 0" имеют большое значение, но мы никогда их не получаем.
Мы действительно получаем бесполезные сообщения более высокого порядка, подобные приведенному выше, которые являются просто выбросом «никаких действий», засоряющим наш файл / var / log / messages.
Страница за страницей игнорируемых дампов стека трудно увидеть реальные ошибки. Это снижает надежность системы.
Итак, есть ли способ перенаправить только эти сообщения из файла / var / log / messages?
«Поддельный» или «плохой» - это не тот вывод, который Крис сделал в блоге, на который вы указали. Они объяснили, что распределитель, пытающийся сначала выполнить младший, не является интуитивным.
Определите свою рабочую нагрузку, взглянув на эти:
/proc/meminfo
Предоставьте эти сведения службе поддержки вашего дистрибутива или здесь, на странице Server Fault. Идеи, которые можно попробовать, могут включать параметры настройки или более новое ядро.
Как и многие вещи, зарегистрированные в Linux, это printk()
исходя из. warn_alloc()
в mm/page_alloc.c
нельзя подавить по отдельности, но вы можете подавить все сообщения с приоритетом ниже LOGLEVEL_WARNING
(определяется как 4). Eсть sysctl для этого, так что создайте /etc/sysctl.d/printk.conf
с чем-то вроде
# console_loglevel, default_message_loglevel, minimum_console_loglevel, default_console_loglevel
kernel.printk = 3 4 1 7
Обратите внимание, что это также подавит ряд других потенциально интересных предупреждений.
Или вы можете централизовать ведение журнала и оповещения и иметь возможность обрабатывать большое количество строк. printk + syslog - это больше, чем человек может прочитать, определите, как извлекать из шума интересующие вас сигналы.