Как узнать размер буфера ядра?
Добавлено: 27 мар 2007, 12:30
В ядре есть кольцевой буфер, куда пишется информация функцией printk. Размер этого буфера - LOG_BUF_LEN, эта переменная определена в файле printk.c. Во всех доках написано, что на ядрах 2.6 размер этого буфера по умолчанию - 16 Кб. Но этот размер может быть изменен при сборке ядра
Мне нужно узнать расмер кольцевого буфера ядра работающей системы.
Для этого я использовал команду dmesg, которая этот буфер читает. Опция -s указывает, сколько байтов читать. Я думал так: если указать большое число и пернаправить вывод dmesg в файл, то размер этого файла и будет равен размеру кольцевого буфера ядра.
Но при реализации возникли какие-то глюки.
Когда я, скажем писал:
dmesg -s 20000 > 1,
файл выходил размером 14008.
dmesg -s 17000 > 1,
размер файла - 11908
dmesg -s 100000 > 1,
размер файла - 45877.
dmesg -s 90000 > 1,
размер файла - 45877.
Почему он выходит разным? И реальный ли это размер буфера ядра?
И почему он не равен 16 Кб, как указано во всех доках?
Попробовав на другой системе, я получал размер файла 10894 вне зависимости от параметра, переданного dmesg.
Мне нужно узнать расмер кольцевого буфера ядра работающей системы.
Для этого я использовал команду dmesg, которая этот буфер читает. Опция -s указывает, сколько байтов читать. Я думал так: если указать большое число и пернаправить вывод dmesg в файл, то размер этого файла и будет равен размеру кольцевого буфера ядра.
Но при реализации возникли какие-то глюки.
Когда я, скажем писал:
dmesg -s 20000 > 1,
файл выходил размером 14008.
dmesg -s 17000 > 1,
размер файла - 11908
dmesg -s 100000 > 1,
размер файла - 45877.
dmesg -s 90000 > 1,
размер файла - 45877.
Почему он выходит разным? И реальный ли это размер буфера ядра?
И почему он не равен 16 Кб, как указано во всех доках?
Попробовав на другой системе, я получал размер файла 10894 вне зависимости от параметра, переданного dmesg.