У мене виникає неприємна проблема. У мене є бібліотека, яка використовує sg для виконання налаштованих CDB. Існує пара систем, які зазвичай мають проблеми з розподілом пам'яті в sg . Зазвичай у драйвера sg жорсткий ліміт близько 4 Мб, але ми бачимо його в цих кількох системах із ~ 2,3 Мб запитами. Тобто CDB готуються виділити для передачі 2,3 Мб. Тут не повинно бути жодних проблем: 2.3 <4.0.
Тепер профіль машини. Це 64-бітний процесор, але він працює 32-розрядний CentOS 6.0 (я не будував їх і не маю нічого спільного з цим рішенням). Версія ядра для цього дистрибутива CentOS становить 2.6.32. Вони мають 16 Гб оперативної пам’яті.
Ось як виглядає використання пам'яті в системі (хоча, оскільки ця помилка виникає під час автоматизованого тестування, я ще не перевіряв, чи відображає це стан, коли ця помилка повертається з sg ).
top - 00:54:46 up 5 days, 22:05, 1 user, load average: 0.00, 0.01, 0.21
Tasks: 297 total, 1 running, 296 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 15888480k total, 9460408k used, 6428072k free, 258280k buffers
Swap: 4194296k total, 0k used, 4194296k free, 8497424k cached
Я знайшов цю статтю з Linux Journal, яка стосується розподілу пам'яті в ядрі. Стаття датована, але, схоже, стосується 2,6 (деякі коментарі щодо автора на чолі). У статті згадується, що ядро обмежене приблизно 1 Гб пам'яті (хоча з тексту не зовсім зрозуміло, чи є 1 Гбіт для кожного фізичного та віртуального або загального). Мені цікаво, чи це точне твердження для 2.6.32. Зрештою, мені цікаво, чи ці системи досягають цієї межі.
Хоча це насправді не відповідає на мою проблему, я цікавлюсь правдивістю претензії за 2.6.32. Отже, який фактичний межа пам'яті для ядра? Це може знадобитися для розгляду проблем. Будь-які інші пропозиції вітаються. Що робить це таким неприємним, що ці системи ідентичні багатьом іншим, які не мають такої ж проблеми.