Я бы сказал, что это то, что каждый может улучшить. Это требует времени и терпения, и некоторые тексты настолько непристойны, насколько это касается обозначений, но если вы готовы потратить время, я думаю, это не должно быть слишком ужасно.
Я бы проверил список математических символов из Википедии , и буду держать его рядом, если вы увидите большой всплывающий список символов. Переводите их по одному и соединяйте их так, чтобы это было наиболее целесообразно для вас (или спрашивайте нас несколько раз, пока вы не освоитесь)
.
/usr/src/linux/Documentation/accounting/taskstats.txt
Taskstats - это интерфейс на основе сетевых ссылок для отправки по задачам и статистика по процессам от ядра до пользовательского пространства.
Taskstats была разработана для следующих преимуществ:
- эффективное предоставление статистики в течение жизненного цикла задачи и при ее выходе
- единый интерфейс для нескольких подсистем учета
- расширяемость для использование в будущих исправлениях учета
Этот интерфейс позволяет отслеживать использование ЦП, памяти и ввода-вывода процессами по вашему выбору. Вам нужно только настроить и получать сообщения на одном сокете.
Это не отличает (например) дисковый ввод-вывод от сетевого ввода-вывода. Если это важно для вас, вы можете использовать библиотеку перехвата LD_PRELOAD
, которая отслеживает операции с сокетами. Предполагая, что вы можете контролировать запуск программ, которые хотите наблюдать, и что они, конечно же, не будут трюкать за вашей спиной.
Я могу »
Взгляните на linux инструментарий трассировки (LTTng). Он вставляет точки трассировки в ядро и выполняет некоторую пост-обработку для получения той статистики, о которой вы спрашиваете. Файлы трассировки становятся большими, если вы фиксируете все, но вы можете сохранить управляемость, если ограничите типы событий, которые вы активируете.
http://lttng.org для получения дополнительной информации ...
Относительно пропускной способности сети: Этот ответ суперпользователя описывает обработку / proc / net / tcp для сбора данных об использовании пропускной способности сети.
Я знаю, что iptables можно использовать для работы в сети бухгалтерский учет (см., например, статьи LWN , Linux.com или Shorewall )), но я не вижу практического способа сделать это на на основе процесса.
Чтение / proc - это, в конечном счете, единственный способ контролировать использование ЦП и памяти отдельными процессами без внедрения кода в ядро. Если вы посмотрите на top (1), вы увидите, что чтение большого количества файлов в / proc - это именно то, что он делает каждую секунду. Все инструменты и библиотеки пользовательского режима, которые получают такую информацию, должны получать ее из /proc.
. Как и в случае использования пропускной способности сети, существует несколько подходов, которые более или менее сводятся к захвату всего входящего и исходящего сетевого трафика. коробки. Вы также можете подумать о написании специального модуля netfilter (iptables), который выполняет именно тот тип подсчета, который вам нужен, без накладных расходов на захват трафика.
Я только что наткнулся на это, когда искал ответы на то же самое. просто примечание - при использовании файловой системы / proc вам не нужно закрывать файл после каждого чтения. вы можете держать файл открытым, и каждый раз, когда вы будете читать, вы будете получать новую статистику ... так что у вас не должно быть накладных расходов на открытие и закрытие каждый раз, когда вы хотите получить статистику ... у меня это работает javascript на node.js, если вам нужен пример ...