Мне нужно узнать расмер кольцевого буфера ядра работающей системы.
Для этого я использовал команду 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.