1. 程式人生 > >PROC系列之---/proc/pid/stat

PROC系列之---/proc/pid/stat

/proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為核心與程序提供通訊的介面。使用者和應用程式可以通過/proc得到系統的資訊,並可以改變核心的某些引數。由於系統的資訊,如程序,是動態改變的,所以使用者或應用程式讀取/proc目錄中的檔案時,proc檔案系統是動態從系統核心讀出所需資訊並提交的。

/proc目錄中有一些以數字命名的目錄,它們是程序目錄。系統中當前執行的每一個程序在/proc下都對應一個以程序號為目錄名的目錄/proc/pid,它們是讀取程序資訊的介面。此外,Linux 2.6.0-test6以上的版本中/proc/pid目錄中有一個task目錄,/proc/pid/task目錄中也有一些以該程序所擁有的執行緒的執行緒號命名的目錄/proc/pid/task/tid,它們是讀取執行緒資訊的介面。

/proc/cpuinfo檔案

         該檔案中存放了有關 cpu的相關資訊(型號,快取大小等)。

[[email protected] ~]$ cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 15

model           : 4

model name      : Intel(R) Xeon(TM) CPU 3.00GHz

stepping        : 10

cpu MHz         : 3001.177

cache size      : 2048 KB

physical id     : 0

siblings        : 2

core id         : 0

cpu cores       : 1

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 5

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm pni monitor ds_cpl cid xtpr

bogomips        : 6004.52

說明:以下只解釋對我們計算Cpu使用率有用的相關引數。

         引數                            解釋

processor (0)                       cpu的一個物理標識

結論1:可以通過該檔案根據processor出現的次數統計cpu的邏輯個數(包括多核、超執行緒)

/proc/stat檔案

         該檔案包含了所有CPU活動的資訊,該檔案中的所有值都是從系統啟動開始累計到當前時刻。不同核心版本中該檔案的格式可能不大一致,以下通過例項來說明資料該檔案中各欄位的含義。

例項資料:2.6.24-24版本上的

[email protected]:~$ cat /proc/stat

cpu  38082 627 27594 893908 12256 581 895 0 0

cpu0 22880 472 16855 430287 10617 576 661 0 0

cpu1 15202 154 10739 463620 1639 4 234 0 0

intr 120053 222 2686 0 1 1 0 5 0 3 0 0 0 47302 0 0 34194 29775 0 5019 845 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ctxt 1434984

btime 1252028243

processes 8113

procs_running 1

procs_blocked 0

第一行的數值表示的是CPU總的使用情況,所以我們只要用第一行的數字計算就可以了。下表解析第一行各數值的含義:

引數          解析(單位:jiffies)

(jiffies是核心中的一個全域性變數,用來記錄自系統啟動一來產生的節拍數,在linux中,一個節拍大致可理解為作業系統程序排程的最小時間片,不同linux核心可能值有不同,通常在1ms到10ms之間)

user (38082)    從系統啟動開始累計到當前時刻,處於使用者態的執行時間,不包含 nice值為負程序。

nice (627)      從系統啟動開始累計到當前時刻,nice值為負的程序所佔用的CPU時間

system (27594從系統啟動開始累計到當前時刻,處於核心態的執行時間

idle (893908)   從系統啟動開始累計到當前時刻,除IO等待時間以外的其它等待時間iowait (12256) 從系統啟動開始累計到當前時刻,IO等待時間(since 2.5.41)

irq (581)           從系統啟動開始累計到當前時刻,硬中斷時間(since 2.6.0-test4)

softirq (895    從系統啟動開始累計到當前時刻,軟中斷時間(since 2.6.0-test4)stealstolen(0)                   which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)

guest(0)                               which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel(since 2.6.24)

結論2:總的cpu時間totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen  +  guest

/proc/<pid>/stat檔案                                          

該檔案包含了某一程序所有的活動的資訊,該檔案中的所有值都是從系統啟動開始累計

到當前時刻。以下通過例項資料來說明該檔案中各欄位的含義。

[[email protected] ~]# cat /proc/6873/stat

6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798 0 0 0 0 0 0 0 17 0 0 0

說明:以下只解釋對我們計算Cpu使用率有用相關引數

引數                                                                解釋

pid=6873                            程序號

utime=1587                       該任務在使用者態執行的時間,單位為jiffies

stime=41958                      該任務在核心態執行的時間,單位為jiffies

cutime=0                            所有已死執行緒在使用者態執行的時間,單位為jiffies

cstime=0                            所有已死在核心態執行的時間,單位為jiffies

結論3程序的總Cpu時間processCpuTime = utime + stime + cutime + cstime,該值包括其所有執行緒的cpu時間。

/proc/<pid>/task/<tid>/stat檔案

該檔案包含了某一程序所有的活動的資訊,該檔案中的所有值都是從系統啟動開始累計到當前時刻。該檔案的內容格式以及各欄位的含義同/proc/<pid>/stat檔案。

         注意,該檔案中的tid欄位表示的不再是程序號,而是linux中的輕量級程序(lwp),即我們通常所說的執行緒。

結論4:執行緒Cpu時間threadCpuTime = utime + stime

系統中有關程序cpu使用率的常用命令

ps 命令

通過ps命令可以檢視系統中相關程序的Cpu使用率的資訊。以下在linux man文件中對ps命令輸出中有關cpu使用率的解釋:

CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is unlikely to add up to exactly 100%.

%cpu   cpu utilization of the process in "##.#" format. It is the CPU time used                           divided by the time the process has been running (cputime/realtime ratio),                           expressed as a percentage. It will not add up to 100% unless you are lucky.

結論5ps命令算出來的cpu使用率相對於程序啟動時的平均值,隨著程序執行時間的增大,該值會趨向於平緩。

top命令

通過top命令可以檢視系統中相關程序的實時資訊(cpu使用率等)。以下是man文件中對top命令輸出中有關程序cpu使用率的解釋。

#C  --  Last used CPU (SMP)                   A number representing the last used processor. In a true  SMP  environment  this  will  likely change  frequently  since  the  kernel intentionally uses weak affinity.  Also, the very act of running top may break this weak affinity and cause more processes to  change  CPUs  more  often (because of the extra demand for cpu time).

%CPU  --  CPU usage                   The  task’s share of the elapsed CPU time since the last screen update, expressed as a percent-age of total CPU time.  In a true SMP environment, if  Irix mode is Off, top will operate in Solaris mode where a task’s cpu usage will be divided by the total number of CPUs.

結論6某一個執行緒在其執行期間其所使用的cpu可能會發生變化。

結論7在多核的情況下top命令輸出的cpu使用率實質是按cpu個數*100%計算的。<!--[if !supportAnnotations]-->

單核情況下Cpu使用率的計算

基本思想

通過讀取/proc/stat 、/proc/<pid>/stat、/proc/<pid>/task/<tid>/stat以及/proc/cpuinfo這幾個檔案獲取總的Cpu時間、程序的Cpu時間、執行緒的Cpu時間以及Cpu的個數的資訊,然後通過一定的演算法進行計算(取樣兩個足夠短的時間間隔的Cpu快照與程序快照來計算程序的Cpu使用率)。

總的Cpu使用率計算

計算方法:

<!--[if !supportLists]-->1、  <!--[endif]-->取樣兩個足夠短的時間間隔的Cpu快照,分別記作t1,t2,其中t1、t2的結構均為:

(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元組;

<!--[if !supportLists]-->2、  <!--[endif]-->計算總的Cpu時間片totalCpuTime

<!--[if !supportLists]-->a)         <!--[endif]-->把第一次的所有cpu使用情況求和,得到s1;

<!--[if !supportLists]-->b)         <!--[endif]-->把第二次的所有cpu使用情況求和,得到s2;

<!--[if !supportLists]-->c)         <!--[endif]-->s2 - s1得到這個時間間隔內的所有時間片,即totalCpuTime = j2 - j1 ;

3、計算空閒時間idle

idle對應第四列的資料,用第二次的第四列 - 第一次的第四列即可

idle=第二次的第四列 - 第一次的第四列

6、計算cpu使用率

pcpu =100* (total-idle)/total

某一程序Cpu使用率的計算

計算方法:  

<!--[if !supportLists]-->1.               <!--[endif]-->取樣兩個足夠短的時間間隔的cpu快照與程序快照,

<!--[if !supportLists]-->a)         <!--[endif]-->每一個cpu快照均為(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元組;

<!--[if !supportLists]-->b)         <!--[endif]-->每一個程序快照均為 (utimestimecutimecstime)4元組;

<!--[if !supportLists]-->2.               <!--[endif]-->分別根據結論2、結論3計算出兩個時刻的總的cpu時間與程序的cpu時間,分別記作:totalCpuTime1totalCpuTime2processCpuTime1processCpuTime2

<!--[if !supportLists]-->3.               <!--[endif]-->計算該程序的cpu使用率pcpu = 100*( processCpuTime2 – processCpuTime1) / (totalCpuTime2 – totalCpuTime1) (按100%計算,如果是多核情況下還需乘以cpu的個數);

實驗資料

實驗一: 監控一空迴圈的程序的cpu使用率。

說明:左邊的資料是按以上演算法得到的資料,其中取樣的時間間隔與top命令重新整理螢幕的時間間隔相同。

按以上方法計算得到的cpu使用率

通過top命令得到的

99.50083

98.333336

98.0

98.83138

99.0

99.0

99.83361

98.83527

98.4975

PID    USER      PR   NI   VIRT   RES   SHR   S %CPU %MEM  TIME+  COMMAND 

7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:00.74 java              

 7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:03.71 java              

 7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:06.67 java              

 7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:09.63 java              

 7639 fjzag     20   0  206m  10m 7136 S   98  2.2   1:12.59 java              

 7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:15.55 java              

 7639 fjzag     20   0  206m  10m 7136 S  100  2.2   1:18.55 java              

 7639 fjzag     20   0  206m  10m 7136 S  100  2.2   1:21.54 java              

 7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:24.52 java              

 7639 fjzag     20   0  206m  10m 7136 S   98  2.2   1:27.46 java

實驗二: 監控jconsole程序的cpu使用率。

說明:左邊的資料是按以上演算法得到的資料,其中取樣的時間間隔與top命令重新整理螢幕的時間間隔相同。

按以上方法計算得到的cpu使用率

通過top命令得到的

8.681135

12.0

10.350584

7.6539097

7.6539097

5.0

13.021703

11.0

8.666667

PID   USER      PR   NI  VIRT   RES   SHR  S  %CPU %MEM  TIME+  COMMAND 

7753 fjzag     20   0  252m  72m  22m S   10 14.4   0:18.70 jconsole          

 7753 fjzag     20   0  252m  72m  22m S   12 14.4   0:19.07 jconsole          

 7753 fjzag     20   0  252m  72m  22m S   11 14.4   0:19.39 jconsole          

 7753 fjzag     20   0  252m  72m  22m S    7 14.4   0:19.61 jconsole          

 7753 fjzag     20   0  252m  72m  22m S    7 14.4   0:19.83 jconsole          

 7753 fjzag     20   0  252m  72m  22m S    5 14.4   0:19.97 jconsole          

 7753 fjzag     20   0  252m  72m  22m S   14 14.4   0:20.38 jconsole          

 7753 fjzag     20   0  252m  72m  22m S   10 14.4   0:20.68 jconsole          

 7753 fjzag     20   0  252m  72m  22m S    9 14.5   0:20.96 jconsole

某一執行緒Cpu使用率的計算

計算方法:  

<!--[if !supportLists]-->1.               <!--[endif]-->取樣兩個足夠短的時間隔的cpu快照與執行緒快照,

<!--[if !supportLists]-->a)         <!--[endif]-->每一個cpu快照均為(user、nice、system、idle、iowait、irq、softirq、stealstealon、guest)的9元組;

<!--[if !supportLists]-->b)         <!--[endif]-->每一個執行緒快照均為 (utimestime)2元組;

<!--[if !supportLists]-->2.               <!--[endif]-->分別根據結論2、結論4計算出兩個時刻的總的cpu時間與執行緒的cpu時間,分別記作:totalCpuTime1totalCpuTime2threadCpuTime1threadCpuTime2

<!--[if !supportLists]-->3.               <!--[endif]-->計算該執行緒的cpu使用率pcpu = 100*( threadCpuTime2 – threadCpuTime1) / (totalCpuTime2 – totalCpuTime1) (按100%計算,如果是多核情況下還需乘以cpu的個數);

實驗資料

實驗一: 監控一空迴圈的執行緒的cpu使用率。

說明:左邊的資料是按以上演算法得到的資料,其中取樣的時間間隔與top命令重新整理螢幕的時間間隔相同。

按以上方法計算得到的cpu使用率

通過top命令得到的

98.83138

97.00997

96.98997

97.49583

98.169716

96.8386

97.333336

93.82304

98.66667

PID    USER      PR   NI   VIRT   RES   SHR   S %CPU %MEM  TIME+  COMMAND 

7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:22.94 java              

 7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:25.86 java              

 7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:28.76 java              

 7649 fjzag     20   0  206m  10m 7136 R   99  2.2   7:31.72 java              

 7649 fjzag     20   0  206m  10m 7136 R   98  2.2   7:34.65 java              

 7649 fjzag     20   0  206m  10m 7136 R   96  2.2   7:37.53 java              

 7649 fjzag     20   0  206m  10m 7136 R   98  2.2   7:40.47 java              

 7649 fjzag     20   0  206m  10m 7136 R   96  2.2   7:43.34 java              

 7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:46.25 java

實驗二: 監控jconsole程式某一執行緒的cpu使用率。

說明:左邊的資料是按以上演算法得到的資料,其中取樣的時間間隔與top命令重新整理螢幕的時間間隔相同。

按以上方法計算得到的cpu使用率

通過top命令得到的

1.3400335

6.644518

1.3333334

0.6677796

0.6666667

1.3333334

1.3333334

 PID    USER      PR   NI   VIRT   RES  SHR  S %CPU %MEM  TIME+  COMMAND 

7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:11.92 jconsole          

 7755 fjzag     20   0  251m  72m  22m S    7 14.4   0:12.12 jconsole          

 7755 fjzag     20   0  251m  72m  22m S    2 14.4   0:12.18 jconsole          

 7755 fjzag     20   0  251m  72m  22m S    0 14.4   0:12.18 jconsole          

 7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:12.20 jconsole          

 7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:12.24 jconsole          

 7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:12.28 jconsole

多核情況下cpu使用率的計算                                                    

以下通過實驗資料來說明多核情況下某一程序cpu使用率是按cpu個數*100%計算的.

實驗一

描述:

雙核的情況下作的一組實驗,第一組資料是通過ps  -eLo pid,lwp,pcpu | grep 9140命令檢視程序號為9140的程序中各執行緒的詳細資訊。第二組資料是通過 ps命令檢視程序號為9140程序的cpu使用率。

資料一:

pid   lwp  %cpu

9140  9140  0.0
 9140  9141  0.0
 9140  9142  0.0
 9140  9143  0.0
 9140  9144  0.0
 9140  9149  0.0
 9140  9150  0.0
 9140  9151  0.0
 9140  9152  0.1
 
9140  9153 96.6該執行緒是一個空迴圈
 9140  9154 95.9
該執行緒是一個空迴圈

以上除了紅色標註出來的兩個執行緒以外,其他的執行緒都是後臺執行緒。

資料二:

pid   %cpu

9140  193

實驗二

描述:

單核的情況下作的一組實驗,第一組資料是通過ps  -eLo pid,lwp,pcpu | grep 6137命令檢視程序號為6137的程序中各執行緒的詳細資訊。第二組資料是通過 ps命令檢視程序號為6137程序的cpu使用率。

資料一:

 pid    lwp   %cpu

 6137  6137  0.0

 6137  6138  0.1

 6137  6143  0.0

 6137  6144  0.0

 6137  6145  0.0

 6137  6146  0.0

 6137  6147  0.0

 6137  6148  0.0

 6137  6149  0.0

6137  6150 46.9                                                 空迴圈執行緒

6137  6151 46.9                                                 空迴圈執行緒

以上除了紅色標註出來的兩個執行緒以外,其他的執行緒都是後臺執行緒。

資料二

pid %cpu

6137 92.9

主要問題:

<!--[if !supportLists]-->1.       <!--[endif]-->不同核心版本/proc/stat檔案格式不大一致。/proc/stat檔案中第一行為總的cpu使用情況。

各個版本都有的4個欄位: user、nice、system、idle

2.5.41版本新增欄位:iowait

2.6.0-test4新增欄位:irq、softirq

2.6.11新增欄位:stealstolen :                    which is the time spent in other operating

systems when running in a virtualized environment

2.6.24新增欄位:guest:                                    which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel

2./proc/pid/task目錄是Linux 2.6.0-test6之後才有的功能。

3.關於出現cpu使用率為負的情況,目前想到的解決方案是如果出現負值,連續取樣計算cpu使用率直到為非負。

4. 有些執行緒生命週期較短,可能在我們取樣期間就已經死掉了.

相關推薦

PROC系列---/proc/pid/stat

/proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為核心與程序提供通訊的介面。使用者和應用程式可以通過/proc得到系統的資訊,並可以改變核心的某些引數。由於系統的資訊,如程序,是動態改變的,所以使用者或應用程式讀取/proc目錄中的檔案時,proc檔案系統是動態從

/proc/[pid]/stat 52 個引數含義

以下為ubuntu14.04, 3.13.11 /proc/[pid]/stat:檔案中共52個引數,[cat /proc/[pid]/stat |  wc -w ;   //w-word] 以下為各引數的意思: Pid  %d  

proc檔案系統 /proc/stat

/proc/stat 包含了所有CPU活動的資訊,該檔案中的所有值都是從系統啟動開始累計到當前時刻。[[email protected] ~]$ cat /proc/statcpu 432661 13295 86656 422145968 171474 233 53

Linux-系統管理-/proc/pid/stat

cat /proc/18335/stat 18335 (Server) S 1 18116 18085 0 -1 4202496 8470403 1005 3115 0 21662801 14435289 0 0 20 0 118 0 1818

轉載:linux概念/proc與/sys

其中 結構體 分層 scsi 內聯 聯系 tom 基於 是否 linux概念之/proc與/sys http://blog.chinaunix.net/uid-1835494-id-3070465.html   proc/x:1/sched http://bbs.chin

proc文件系統探索proc根目錄下的文件 一 cmdline 命令行的參數

aps return getc 有用 travel latency make i++ 終端 轉載自ChinaUnix博客:http://blog.chinaunix.net/uid-22666248-id-3040364.html 本文是根據 kerneltravel

Linux應用程式設計4proc檔案介紹

1.proc檔案系統介紹 1.1.作業系統級別的除錯 1)簡單程式單步除錯 2)複雜程式printf列印資訊除錯 3)框架體系日誌記錄資訊除錯 4)核心除錯的困境 1.2.proc虛擬檔案系統的工作原理 1)linux核心是一個非常龐大、非常複雜的一個單獨的程式

linux 核心程式設計proc虛擬檔案系統

在 Linux 系統中,/proc 檔案系統十分有用,它被用於核心向用戶匯出資訊。/proc 檔案系統是一個虛擬檔案系統,通過它可以使用一種新的方法在 Linux 核心空間和使用者空間之間進行通訊。在/proc 檔案系統中,我們可以將對虛擬檔案的讀寫作為與核心中實體進行

kernel module程式設計(八):讀取proc檔案seq_file

  本文也即《Linux Device Drivers》,LDD3的第四章Debuging Techniques的讀書筆記之三,但我們不限於此內容。   在上次我們使用了read_proc的方式通過/proc檔案讀取kernel module的資訊。作者給的例子他自己說是ug

Linux學習筆記proc檔案使用篇

在proc 目錄下建立檔案,不得不提到的struct file_operations , 詳細struct 資訊,可以查閱—— [linux kernel] . 本篇主要討論的是以下幾個介面: open int (open) (struct

Linux核心通訊---proc檔案系統(詳解)

使用 /proc 檔案系統來訪問 Linux 核心的內容,這個虛擬檔案系統在核心空間和用戶空間之間打開了一個通訊視窗: /proc 檔案系統是一個虛擬檔案系統,通過它可以使用一種新的方法在 Linux核心空間和使用者間之間進行通訊。在 /proc 檔案系統中,我

linux裝置驅動學習筆記--核心除錯方法proc(補充seq_file)

上一節中的proc實現對於開關檔案,控制檔案,以及顯示很少資訊的檔案來說還是比較簡單的,但是對於需要輸出大量資訊像meminfo,或者結構化的資訊像cpuinfo等時就會顯得很笨拙,並且程式碼也很不好理解與維護。核心為了簡化這種proc檔案的實現提供了另外一種方案----s

/proc/interrupts 和 /proc/stat 檢視中斷的情況

在/proc檔案系統下,又兩個檔案提供了中斷的資訊。 /proc/interrupts 檔案中列出當前系統使用的中斷的情況,所以某個中斷處理沒有安裝,是不會顯示的。哪怕之前安裝過,被解除安裝了。 從左到右分別是, irq的序號, 在各自cpu上發生中斷的次數,可程式設

linux裝置驅動學習筆記--核心除錯方法proc

/proc 檔案系統是 GNU/Linux 特有的。它是一個虛擬的檔案系統,因此在該目錄中的所有檔案都不會消耗磁碟空間。通過它能夠非常簡便地瞭解系統資訊,尤其是其中的大部分檔案是人類可閱讀的(不過還是需要一些幫助)。許多程式實際上只是從 /proc 的檔案中收集資訊,然後按

linux文件管理proc文件系統

virtual rtu gre line tel 系統 cache 數據 less proc 文件系統 ===============================================================================

提升HTML5的性能體驗系列五 webview啟動速度優化及事件順序解析

執行時間 很快 runt 代碼 模式 本地 技術 apk loaded webview加載時有5個事件。觸發順序為loading、titleUpdate、rendering、rendered、loaded。webview開始載入頁面時觸發loading,載入過程中如果&am

opensslBIO系列22---Cipher類型的BIO

能夠 lte net 操作 適應 signed tar sign 論壇 Cipher類型BIO ---依據openssl doc\crypto\bio_f_cipher.pod翻譯和自己的理解寫成 (作者:DragonKing, Mail: [email

opensslBIO系列12---文件描寫敘述符(fd)類型BIO

scrip 所在 pri 返回 div static 實現 論壇 res 文件描寫敘述符(fd)類型BIO ---依據openssl doc\crypto\bio_s_fd.pod翻譯和自己的理解寫成 (作者:DragonKing [email 

5Python全棧系列IO多路復用

技術 多線程 課程 網絡連接 write Python全棧之路系列之IO多路復用What is IO Multiplexing?IO多路復用是指內核一旦發現進程指定的一個或者多個IO條件準備讀取,它就通知該進程。舉例說明你是一名老師(線程),上課了(啟動線程),這節課是自習課,學生都在自習

5Python全棧系列算法

import 英語 臺灣 空間 元素 ython全棧之路系列之算法一個算法的優劣可以用空間復雜度與時間復雜度來衡量。冒泡排序冒泡排序(英語:Bubble Sort,臺灣另外一種譯名為:泡沫排序)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交