Ищем kstat эквиваленты в Linux
У меня есть программа, которая собирает различную информацию kstat в наших системах Solaris, и теперь, когда мы внедрили Linux в наш центр обработки данных, я бы хотел сделать то же самое для Linux.
У меня, однако, проблемы с поиском эквивалентов для многих kstats. Мне было интересно, есть ли библиотека или утилита, которая имитирует kstats для среды Linux. Даже частичная реализация будет полезна.
На данный момент я анализирую файлы в / proc, но обнаружил, что нужная информация попала в цель. Например, kstat имеет следующие данные:
unix:: vminfo swap_alloc swap_avail swap_free swap_resv
В Linux у вас есть записи "SwapTotal" и "SwapFree", но а) Похоже, что swap_free действительно соответствует "SwapTotal", а swap_avail соответствует "SwapFree" b) Я не могу найти значения для swap_avail (может быть, SwapTotal минус SwapFree?) теперь swap_resv
Есть идеи?
3 ответа
Я не знаю о реализации Linux kstat, но в любом случае, вы сначала столкнулись с проблемой терминологии.
В статистике подкачки Solaris kstats, на которую вы ссылаетесь, используется "swap" для обозначения всей виртуальной памяти, то есть областей подкачки плюс большая часть оперативной памяти.
С другой стороны, статистика Linux SwapTotal и SwapFree относится только к области подкачки (то есть на диске).
Другая проблема заключается в распределении памяти в Linux, поэтому счетчик резервирования памяти может не поддерживаться и в любом случае не будет полезен.
Версия Perl:
https://github.com/zfsonlinux/linux-kstat
"Это реализация модуля Perl Sun:: Solaris:: Kstat для Linux ZFS. Он должен вести себя идентично версии Solaris".
Рубиновая версия:
https://www.rubydoc.info/gems/linux-kstat/Linux/Kstat
"Класс Kstat инкапсулирует статистику ядра Linux, полученную из /proc/stat."
В документации по meminfo есть две статьи о LWN, в которых описаны все поля из /proc/meminfo и сказано следующее о SwapTotal и SwapFree:
SwapTotal: total amount of swap space available
SwapFree: Memory which has been evicted from RAM, and is temporarily
on the disk
Также есть некоторые обсуждения на http://kerneltrap.org/node/4097.