В Linux, эта информация доступна в/proc файловой системе. Я не большой поклонник используемого формата текстового файла, поскольку каждый дистрибутив Linux, кажется, настраивает по крайней мере один важный файл. Беглый взгляд как источник к 'PS' показывает путаницу.
, Но вот то, где найти информацию, Вы ищете:
/proc/meminfo содержит большинство информации в масштабе всей системы, которую Вы ищете. Здесь это похоже в моей системе; я думаю, что Вы интересуетесь [1 131] MemTotal, MemFree, SwapTotal, и SwapFree:
Anderson cxc # more /proc/meminfo
MemTotal: 4083948 kB
MemFree: 2198520 kB
Buffers: 82080 kB
Cached: 1141460 kB
SwapCached: 0 kB
Active: 1137960 kB
Inactive: 608588 kB
HighTotal: 3276672 kB
HighFree: 1607744 kB
LowTotal: 807276 kB
LowFree: 590776 kB
SwapTotal: 2096440 kB
SwapFree: 2096440 kB
Dirty: 32 kB
Writeback: 0 kB
AnonPages: 523252 kB
Mapped: 93560 kB
Slab: 52880 kB
SReclaimable: 24652 kB
SUnreclaim: 28228 kB
PageTables: 2284 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 4138412 kB
Committed_AS: 1845072 kB
VmallocTotal: 118776 kB
VmallocUsed: 3964 kB
VmallocChunk: 112860 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
Для загрузки ЦП, необходимо сделать немного работы. Linux делает доступным полная загрузка ЦП, так как система запускается; это, вероятно, не то, чем Вы интересуетесь. Если Вы хотите знать то, чем загрузка ЦП была в течение прошлой секунды, или 10 секунд, то необходимо запросить информацию и вычислить ее сами.
информация доступна в [1 135]/proc/stat, который документируется вполне прилично в http://www.linuxhowtos.org/System/procstat.htm ; вот то, на что это похоже на моем поле с 4 ядрами:
Anderson cxc # more /proc/stat
cpu 2329889 0 2364567 1063530460 9034 9463 96111 0
cpu0 572526 0 636532 265864398 2928 1621 6899 0
cpu1 590441 0 531079 265949732 4763 351 8522 0
cpu2 562983 0 645163 265796890 682 7490 71650 0
cpu3 603938 0 551790 265919440 660 0 9040 0
intr 37124247
ctxt 50795173133
btime 1218807985
processes 116889
procs_running 1
procs_blocked 0
Первый, необходимо определить, сколько центральных процессоров (или процессоры или ядра обработки) доступно в системе. Чтобы сделать это, считайте количество 'cpuN' записей, где N запускается в 0 и инкременты. Не считайте строку 'CPU', которая является комбинацией cpuN строк. В моем примере Вы видите cpu0 через cpu3 для в общей сложности 4 процессоров. С этого времени можно проигнорировать cpu0.. cpu3 и внимание только на строку 'CPU'.
Затем, необходимо знать, что четвертое число в этих строках является мерой времени простоя, и таким образом четвертое число на строке 'CPU' является общим временем простоя для всех процессоров со времени начальной загрузки. Это время измеряется в Linux "миг", который является 1/100 секунды каждый.
, Но Вы не заботитесь в общее время простоя; Вы заботитесь во время простоя в установленный срок, например, в последнюю секунду. Действительно вычислите, что, необходимо считать этот файл дважды, 1 секунда независимо. Тогда можно сделать разность четвертого значения строки. Например, если Вы берете образец и добираетесь:
cpu 2330047 0 2365006 1063853632 9035 9463 96114 0
Тогда одну секунду спустя Вы получаете этот образец:
cpu 2330047 0 2365007 1063854028 9035 9463 96114 0
Вычитают эти два числа, и Вы получаете разность 396, что означает, что Ваш ЦП был неактивен в течение 3,96 секунд из прошлых 1,00 секунд. Прием, конечно, то, что необходимо разделиться на количество процессоров. 3.96 / 4 = 0.99, и существует Ваш неактивный процент; неактивных 99%, и занятый 1%.
В моем коде, у меня есть кольцевой буфер 360 записей, и я читал этот файл каждую секунду. Это позволяет мне быстро вычислить загрузку ЦП на 1 секунду, 10 секунд, и т.д., полностью до 1 часа.
Для определенной для процесса информации, необходимо посмотреть в [1 136]/proc/pid; если Вы не заботитесь, примыкают к Вашему изодромному с предварением, можно посмотреть в/proc/self.
ЦП, используемый Вашим процессом, доступен в [1 137]/proc/self/stat. Это - нечетно выглядящий файл, состоящий из одной строки; например:
19340 (whatever) S 19115 19115 3084 34816 19115 4202752 118200 607 0 0 770 384 2
7 20 0 77 0 266764385 692477952 105074 4294967295 134512640 146462952 321468364
8 3214683328 4294960144 0 2147221247 268439552 1276 4294967295 0 0 17 0 0 0 0
важные данные здесь являются 13-ми и 14-ми маркерами (0 и 770 здесь). 13-й маркер является количеством мига, который процесс выполнил в непривилегированном режиме, и 14-м является количество мига, который процесс выполнил в привилегированном режиме. Добавьте два вместе, и у Вас есть его суммарное использование ЦП.
Снова, необходимо будет периодически выбирать этот файл и вычислять разность для определения использования ЦП процесса со временем.
Редактирование: помнят, что при вычислении загрузки ЦП процесса необходимо принять во внимание 1) количество потоков в процессе и 2) количество процессоров в системе. Например, если Ваш однопоточный процесс использует только 25% ЦП, который мог бы быть хорошим или плохим. Хороший в однопроцессорной системе, но плохо в системе с 4 процессорами; это означает, что Ваш процесс работает постоянно и использует 100% циклов ЦП, доступных ему.
Для определенной для процесса информации о памяти, Вы ahve для рассмотрения/proc/self/status, который похож на это:
Name: whatever
State: S (sleeping)
Tgid: 19340
Pid: 19340
PPid: 19115
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10 11 20 26 27
VmPeak: 676252 kB
VmSize: 651352 kB
VmLck: 0 kB
VmHWM: 420300 kB
VmRSS: 420296 kB
VmData: 581028 kB
VmStk: 112 kB
VmExe: 11672 kB
VmLib: 76608 kB
VmPTE: 1244 kB
Threads: 77
SigQ: 0/36864
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: fffffffe7ffbfeff
SigIgn: 0000000010001000
SigCgt: 20000001800004fc
CapInh: 0000000000000000
CapPrm: 00000000ffffffff
CapEff: 00000000fffffeff
Cpus_allowed: 0f
Mems_allowed: 1
voluntary_ctxt_switches: 6518
nonvoluntary_ctxt_switches: 6598
записи, которые запускаются с 'Vm', являются интересными:
единственный объект, в котором я не уверен, Область подкачки, в настоящее время используемая моим процессом . Я не знаю, доступно ли это.
Для отмены используйте
См. bind -P
для получения полного списка привязок клавиш в bash
.