python采集系統(tǒng)的基本性能

采集系統(tǒng)的基本性能信息包括CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等,可以完整描述當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)及質(zhì)量。psutil模塊已經(jīng)封裝了這些方法,用戶可以根據(jù)自身的應(yīng)用場(chǎng)景,調(diào)用相應(yīng)的方法來(lái)滿足需求,非常簡(jiǎn)單實(shí)用。

(1)CPU信息

Linux操作系統(tǒng)的CPU利用率有以下幾個(gè)部分:

User Time,執(zhí)行用戶進(jìn)程的時(shí)間百分比;

System Time,執(zhí)行內(nèi)核進(jìn)程和中斷的時(shí)間百分比;

Wait IO,由于IO等待而使CPU處于idle(空閑)狀態(tài)的時(shí)間百分比;

Idle,CPU處于idle狀態(tài)的時(shí)間百分比。

我們使用Python的psutil.cpu_times()方法可以非常簡(jiǎn)單地得到這些信息,同時(shí)也可以獲取CPU的硬件相關(guān)信息,比如CPU的物理個(gè)數(shù)與邏輯個(gè)數(shù),具體見(jiàn)下面的操作例子:

>>> import psutil

>>>psutil.cpu_times()#使用cpu_times方法獲取CPU完整信息,需要顯示所有邏輯CPU信息,

>>>#指定方法變量percpu=True即可,如psutil.cpu_times(percpu=True)

scputimes(user=38.039999999999999, nice=0.01, system=110.88, idle=177062.59, iowait=53.399999999999999, irq=2.9100000000000001, softirq=79.579999999999998, steal=0.0, guest=0.0)

>>>psutil.cpu_times().user ? ?#獲取單項(xiàng)數(shù)據(jù)信息,如用戶user的CPU時(shí)間比

38.0

>>>psutil.cpu_count() ? ?#獲取CPU的邏輯個(gè)數(shù),默認(rèn)logical=True4

>>>psutil.cpu_count(logical=False) ? ?#獲取CPU的物理個(gè)數(shù)

2

>>>

(2)內(nèi)存信息

Linux系統(tǒng)的內(nèi)存利用率信息涉及total(內(nèi)存總數(shù))、used(已使用的內(nèi)存數(shù))、free(空閑內(nèi)存數(shù))、buffers(緩沖使用數(shù))、cache(緩存使用數(shù))、swap(交換分區(qū)使用數(shù))等,分別使用psutil.virtual_memory()與psutil.swap_memory()方法獲取這些信息,具體見(jiàn)下面的操作例子:

>>> import psutil

>>>mem = psutil.virtual_memory() ? #使用psutil.virtual_memory方法獲取內(nèi)存完整信息

>>>mem

svmem(total=506277888L, available=204951552L, percent=59.5, used=499867648L, free=6410240L, active=245858304, inactive=163733504, buffers=117035008L, cached=81506304)

>>>mem.total ? ?#獲取內(nèi)存總數(shù)

506277888L

>>>mem.free ? ? #獲取空閑內(nèi)存數(shù)

6410240L

>>>psutil.swap_memory() ? ?#獲取SWAP分區(qū)信息sswap(total=1073733632L, used=0L, free=1073733632L, percent=0.0, sin=0, sout=0)

>>>

(3)磁盤信息

在系統(tǒng)的所有磁盤信息中,我們更加關(guān)注磁盤的利用率及IO信息,其中磁盤利用率使用psutil.disk_usage方法獲取。磁盤IO信息包括read_count(讀IO數(shù))、write_count(寫IO數(shù))、read_bytes(IO讀字節(jié)數(shù))、write_bytes(IO寫字節(jié)數(shù))、read_time(磁盤讀時(shí)間)、write_time(磁盤寫時(shí)間)等。這些IO信息可以使用psutil.disk_io_counters()獲取,具體見(jiàn)下面的操作例子:

>>>psutil.disk_partitions() ? ?#使用psutil.disk_partitions方法獲取磁盤完整信息

[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw'), sdiskpart(device='/dev/sda3', mountpoint='/data', fstype='ext4', opts='rw')]

>>>

>>>psutil.disk_usage('/') ?#使用psutil.disk_usage方法獲取分區(qū)(參數(shù))的使用情況

sdiskusage(total=15481577472, used=4008087552, free=10687057920, percent=25.899999999999999)

>>>

>>>psutil.disk_io_counters() ? ?#使用psutil.disk_io_counters獲取硬盤總的IO個(gè)數(shù)、

                   #讀寫信息

sdiskio(read_count=9424, write_count=35824, read_bytes=128006144, write_bytes=204312576, read_time=72266, write_time=182485)

>>>

>>>psutil.disk_io_counters(perdisk=True) ?#“perdisk=True”參數(shù)獲取單個(gè)分區(qū)IO個(gè)數(shù)、

                    ? ? ? ? ?#讀寫信息

{'sda2': sdiskio(read_count=322, write_count=0, read_bytes=1445888, write_bytes=0, read_time=445, write_time=0), 'sda3': sdiskio(read_count=618, write_count=3, read_bytes=2855936, write_bytes=12288, read_time=871, write_time=155), 'sda1': sdiskio(read_count=8484, write_count=35821, read_bytes=123704320, write_bytes=204300288, read_time=70950, write_time=182330)}

(4)網(wǎng)絡(luò)信息

系統(tǒng)的網(wǎng)絡(luò)信息與磁盤IO類似,涉及幾個(gè)關(guān)鍵點(diǎn),包括bytes_sent(發(fā)送字節(jié)數(shù))、bytes_recv=28220119(接收字節(jié)數(shù))、packets_sent=200978(發(fā)送數(shù)據(jù)包數(shù))、packets_recv=212672(接收數(shù)據(jù)包數(shù))等。這些網(wǎng)絡(luò)信息使用psutil.net_io_counters()方法獲取,具體見(jiàn)下面的操作例子:

>>>psutil.net_io_counters() ? ?#使用psutil.net_io_counters獲取網(wǎng)絡(luò)總的IO信息,默

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#認(rèn)pernic=False

snetio(bytes_sent=27098178, bytes_recv=28220119, packets_sent=200978, packets_recv=212672, errin=0, errout=0, dropin=0, dropout=0)

>>>psutil.net_io_counters(pernic=True) ?#pernic=True輸出每個(gè)網(wǎng)絡(luò)接口的IO信息{'lo': snetio(bytes_sent=26406824, bytes_recv=26406824, packets_sent=198526, packets_recv=198526, errin=0, errout=0, dropin=0, dropout=0), 'eth0': snetio(bytes_sent=694750, bytes_recv=1816743, packets_sent=2478, packets_recv=14175, errin=0, errout=0, dropin=0, dropout=0)}

>>>

(5)其他系統(tǒng)信息

除了前面介紹的幾個(gè)獲取系統(tǒng)基本信息的方法,psutil模塊還支持獲取用戶登錄、開(kāi)機(jī)時(shí)間等信息,具體見(jiàn)下面的操作例子:

>>>psutil.users() ? ?#使用psutil.users方法返回當(dāng)前登錄系統(tǒng)的用戶信息

[suser(name='root', terminal='pts/0', host='192.168.1.103', started=1394638720.0), suser(name='root', terminal='pts/1', host='192.168.1.103', started=1394723840.0)]

>>> import psutil, datetime

>>>psutil.boot_time() ? ?#使用psutil.boot_time方法獲取開(kāi)機(jī)時(shí)間,以Linux時(shí)間戳格式返回

1389563460.0

>>>datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")

'2014-01-12 22:51:00' ? ?#轉(zhuǎn)換成自然時(shí)間格式

---------------------

作者:在奮斗的大道

來(lái)源:CSDN

原文:https://blog.csdn.net/zhouzhiwengang/article/details/44779521

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容