dmesg时间转换工具
最近在排查一個(gè)core問題,對dmesg的時(shí)間戳,做了一個(gè)轉(zhuǎn)化工具:ts_dmesg.sh
借助awk 和shell實(shí)現(xiàn):
[python]?view plaincopy
關(guān)于dmesg的原始時(shí)間戳,是系統(tǒng)的產(chǎn)生mesg的系統(tǒng)uptime時(shí)間,故需要獲取系統(tǒng)的啟動時(shí)間;
關(guān)于系統(tǒng)uptime時(shí)間:
/proc/uptime詳解
在Linux中,我們常常會使用到uptime命令去看看系統(tǒng)的運(yùn)行時(shí)間,它與一個(gè)文件有關(guān),就是/proc/uptime,下面對其進(jìn)行詳細(xì)介紹。
[python]?view plaincopy
第一列輸出的是,系統(tǒng)啟動到現(xiàn)在的時(shí)間(以秒為單位),這里簡記為num1;
第二列輸出的是,系統(tǒng)空閑的時(shí)間(以秒為單位), ? ? ? ? ?這里簡記為num2。
注意,很多很多人都知道第二個(gè)是系統(tǒng)空閑的時(shí)間,
但是可能你不知道是,在SMP系統(tǒng)里,系統(tǒng)空閑的時(shí)間有時(shí)會是系統(tǒng)運(yùn)行時(shí)間的幾倍,這是怎么回事呢?
因?yàn)橄到y(tǒng)空閑時(shí)間的計(jì)算,是把SMP算進(jìn)去的,就是所你有幾個(gè)邏輯的CPU(包括超線程)。
系統(tǒng)的空閑率(%) = num2/(num1*N) ?#其中N是SMP系統(tǒng)中的CPU個(gè)數(shù)。
從上面我的一臺機(jī)器上的數(shù)據(jù)可知,
本機(jī)啟動到現(xiàn)在的時(shí)間長度為:6447032.12 seconds = 74.6 days
空閑率為:48185264.69/(6447032.12*8)=93.4%
系統(tǒng)空閑率越大,說明系統(tǒng)比較閑,可以加重一些負(fù)載;
而系統(tǒng)空閑率很小,則可能考慮升級本機(jī)器硬件或者遷移部分負(fù)載到其他機(jī)器上。
Some docs from Redhat:
The first number is the total number of seconds the system has been up.?
The second number is how much of that time the machine has spent idle, in seconds. ?(Jay’s comments: Please pay attention to SMP system.)
linux時(shí)間戳轉(zhuǎn)換
1. 將日期轉(zhuǎn)換成時(shí)間戳 $date +%s -d "04/24/2014 15:30:00"1398324600 2. 將時(shí)間戳轉(zhuǎn)換成日期 $date -d @1398324600Thu Apr 24 15:30:00 CST 2014 3. 將當(dāng)前日期轉(zhuǎn)換成時(shí)間戳 $date +%s1398765730dmesg 時(shí)間轉(zhuǎn)換
dmesg 輸出的格式不易查看,可以通過命令進(jìn)行轉(zhuǎn)換。
記錄如下:
時(shí)間查看:
date -d "1970-01-01 UTC `echo "$(date +%s)-$(cat /proc/uptime|cut -f 1 -d' ')+12288812.926194"|bc ` seconds"
將系統(tǒng)的相對系統(tǒng)啟動的時(shí)間戳轉(zhuǎn)化為絕對時(shí)間:
dc.sh:
[python]?view plaincopy
總結(jié)
以上是生活随笔為你收集整理的dmesg时间转换工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作业二
- 下一篇: 单值二叉树:如果二叉树每个节点都具有相同