Ubuntu使用top command監(jiān)測(cè)CPU肢预、內(nèi)存使用情況

最近學(xué)習(xí)了幾種在Ubuntu中監(jiān)測(cè)CPU和內(nèi)存使用情況的方法矛洞,整理一下。

%%%%%%% top命令行
top命令用于顯示Linux進(jìn)程烫映。它提供了運(yùn)行系統(tǒng)的動(dòng)態(tài)實(shí)時(shí)視圖沼本。通常,這個(gè)命令顯示系統(tǒng)的摘要信息以及當(dāng)前由Linux內(nèi)核管理的進(jìn)程或線程的列表锭沟。
一旦運(yùn)行此命令抽兆,它將打開一個(gè)交互式命令模式,其中上半部分將包含進(jìn)程和資源使用情況的統(tǒng)計(jì)信息族淮。下半部分包含當(dāng)前正在運(yùn)行的進(jìn)程的列表辫红。按下q將簡(jiǎn)單地退出命令模式凭涂。

top
Fig 1: top命令行結(jié)果示意

如果提示沒有安裝top則需要

sudo apt install apt-file && apt-file update

面板信息:
PID:顯示任務(wù)的唯一進(jìn)程id。
PR:表示任務(wù)的優(yōu)先級(jí)贴妻。
SHR:表示任務(wù)使用的共享內(nèi)存數(shù)量切油。
VIRT:任務(wù)使用的總虛擬內(nèi)存。
USER:任務(wù)所有者的用戶名名惩。
%CPU:表示CPU使用量澎胡。
TIME+:CPU時(shí)間,與“TIME”相同绢片,但通過百分之一秒反映出更細(xì)的粒度滤馍。
表示任務(wù)使用的共享內(nèi)存大小(kb)。
NI:表示任務(wù)的NI值底循。一個(gè)負(fù)的NICE值意味著更高的優(yōu)先級(jí)巢株,而正的NICE值意味著更低的優(yōu)先級(jí)。
%MEM:顯示任務(wù)的內(nèi)存使用情況熙涤。

top -n 10 -d 1 -H -i -b > top-output.txt

這行命令是將top的輸出結(jié)果讀取十次 ('-n 10')阁苞,時(shí)間間隔1s ('-d 1'),'H' 代表我們查看的Threads祠挫,'I' 表示Irix Mode那槽,'b'表示Batch Mode : Send output from top to file or any other programs。關(guān)于這幾種模式等舔,大家可以直接在Fig 1顯示的界面中用shift+i, shift+h體會(huì)一下骚灸。
這時(shí)我們就能看到輸出結(jié)果了,首先在對(duì)應(yīng)目錄下生成txt文件慌植。


Fig 2: top在文件目錄下輸出結(jié)果

在命令行顯示txt文件結(jié)果甚牲。

cat top-output.txt

結(jié)果如圖:


Fig 3: 利用cat在命令行顯示文件內(nèi)容

為了滿足不同需求,又嘗試了幾種不同的存儲(chǔ)方式:

for i in {1..5}; do top -n 10 -d 0.1 -H -i -b >> ${i}.txt; done

輸出結(jié)果:


將top輸出存儲(chǔ)到5個(gè)txt文件中蝶柿,每個(gè)文件包含10次top輸出結(jié)果丈钙,采樣間隔為0.1s

這樣我們就存取了5s內(nèi)每間隔0.1s系統(tǒng)CPU和內(nèi)存使用情況的數(shù)據(jù),可以看到一個(gè)變化趨勢(shì)交汤。但是雏赦,由于每次存取內(nèi)容格式并不完全一致,對(duì)于后續(xù)數(shù)據(jù)處理會(huì)是個(gè)問題芙扎,所以還是存為單個(gè)文件方便處理星岗,將command稍作處理即可。

for i in {1..50}; do top -n 1 -d 0.1 -H -i -b >> ${i}.txt; done

這樣就會(huì)存為50個(gè)txt文件纵顾,內(nèi)容格式基本一致伍茄,方便后續(xù)處理。

附Matlab處理數(shù)據(jù)code:

% calculate CPU usage and MEM usage
% version 0.1
%==================== settings ================
file_num     = 100;
CPU_col      = 9; % you should look into the file to determine the value
MEM_col      = 10; % you should look into the file to determine the value

clear clc
CPU.preamble_detect = zeros(1,file_num);       MEM.preamble_detect = zeros(1,file_num);
CPU.fractional_res1 = zeros(1,file_num);       MEM.fractional_res1 = zeros(1,file_num);
CPU.freq_xlating_f1 = zeros(1,file_num);       MEM.freq_xlating_f1 = zeros(1,file_num);
CPU.python          = zeros(1,file_num);       MEM.python          = zeros(1,file_num);
CPU.decoder9        = zeros(1,file_num);       MEM.decoder9        = zeros(1,file_num);
CPU.gr_uhd_usrp     = zeros(1,file_num);       MEM.gr_uhd_usrp     = zeros(1,file_num);
CPU.message_socket  = zeros(1,file_num);       MEM.message_socket  = zeros(1,file_num);
CPU.usage_sum       = zeros(1,file_num);       MEM.usage_sum       = zeros(1,file_num);

%====================== processing =========
for file_ind = 1:file_num
    filename = [num2str(file_num) '.txt'];
    
    % load data
    raw_data = function_loadfile(filename);
    
    % get the length of the data, so we know the number of the threads there
    length_here = size(raw_data, 1);
    CPU.usage_sum(file_ind) = sum(str2double(raw_data(11:length_here,CPU_col)));
    MEM.usage_sum(file_ind) = sum(str2double(raw_data(11:length_here,MEM_col)));
    
    % check the threads
    for threads_ind = 11:length_here
        
        switch raw_data(threads_ind,1)
            case '25481'
                CPU.preamble_detect(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.preamble_detect(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
            case '25480'
                CPU.freq_xlating_f1(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.freq_xlating_f1(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
            case '25476'
                CPU.python(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.python(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
            case '25483'
                CPU.decoder9(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.decoder9(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
            case '25482'
                CPU.fractional_res1(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.fractional_res1(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
            case '25479'
                CPU.gr_uhd_usrp(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.gr_uhd_usrp(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
            case '25478'
                CPU.message_socket(file_ind) = str2double(raw_data(threads_ind,CPU_col));
                MEM.message_socket(file_ind) = str2double(raw_data(threads_ind,MEM_col));
                
                
        end
    end
end

top還有很多其他參數(shù)施逾,感興趣的可以自行學(xué)習(xí)敷矫。

man top

Peace例获!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者曹仗。
  • 序言:七十年代末榨汤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怎茫,更是在濱河造成了極大的恐慌收壕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轨蛤,死亡現(xiàn)場(chǎng)離奇詭異蜜宪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祥山,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門圃验,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缝呕,你說我怎么就攤上這事澳窑。” “怎么了供常?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵摊聋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我栈暇,道長(zhǎng)麻裁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任源祈,我火速辦了婚禮悲立,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘新博。我一直安慰自己,他們只是感情好脚草,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布赫悄。 她就那樣靜靜地躺著,像睡著了一般馏慨。 火紅的嫁衣襯著肌膚如雪埂淮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天写隶,我揣著相機(jī)與錄音倔撞,去河邊找鬼。 笑死慕趴,一個(gè)胖子當(dāng)著我的面吹牛痪蝇,可吹牛的內(nèi)容都是我干的鄙陡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躏啰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼趁矾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起给僵,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤毫捣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后帝际,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔓同,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蹲诀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斑粱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侧甫,死狀恐怖珊佣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情披粟,我是刑警寧澤咒锻,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站守屉,受9級(jí)特大地震影響惑艇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拇泛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一滨巴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俺叭,春花似錦恭取、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至裕照,卻和暖如春攒发,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晋南。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工惠猿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人负间。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓偶妖,卻偏偏與公主長(zhǎng)得像姜凄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子餐屎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • top命令 top命令是Linux下常用的性能分析工具檀葛,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類似于Windo...
    螢火蟲de夢(mèng)閱讀 5,753評(píng)論 0 0
  • 在系統(tǒng)維護(hù)的過程中腹缩,隨時(shí)可能有需要查看 CPU 使用率屿聋,并根據(jù)相應(yīng)信息分析系統(tǒng)狀況的需要。在 CentOS 中藏鹊,可...
    yichen_china閱讀 6,898評(píng)論 0 1
  • Linux進(jìn)程管理原理 Linux的進(jìn)程管理盘寡,就是對(duì)硬件各資源進(jìn)行分配楚殿、調(diào)度、銷毀等工作竿痰,其主要部件的管理為:CP...
    魏鎮(zhèn)坪閱讀 1,236評(píng)論 0 6
  • 儀式性的時(shí)間 安定了 我們的形散聚成一個(gè)整體 這次心神的體悟 又是一場(chǎng)冥冥之中的幽會(huì) 說的悄悄話 總是帶上自以為是...
    東曉曉閱讀 324評(píng)論 0 1
  • 窗外載著泥土香的白云走過脆粥,桌上的那束勿忘我已經(jīng)干枯,淡淡的黃色影涉,凝著哀愁变隔,好似我掉入杯中的淚珠。 嘴里哼著歌曲蟹倾,是...
    殘音945閱讀 401評(píng)論 0 1