中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

南昌網(wǎng)站開發(fā)多少錢杭州seo公司

南昌網(wǎng)站開發(fā)多少錢,杭州seo公司,城鄉(xiāng)建設(shè)網(wǎng)站首頁,站酷網(wǎng)官網(wǎng)入口文章目錄 1 簡介2 CPU% 字段3 MEM% 字段4 load average 平均負(fù)載 1 簡介 top 命令是 Linux 上一個常用的系統(tǒng)監(jiān)控工具,它經(jīng)常用來監(jiān)控 Linux 的系統(tǒng)狀態(tài),是常用的性能分析工具,能夠顯示較全的系統(tǒng)資源信息,包括系統(tǒng)負(fù)載&#xff…

文章目錄

    • 1 簡介
    • 2 CPU% 字段
    • 3 MEM% 字段
    • 4 load average 平均負(fù)載

1 簡介

top 命令是 Linux 上一個常用的系統(tǒng)監(jiān)控工具,它經(jīng)常用來監(jiān)控 Linux 的系統(tǒng)狀態(tài),是常用的性能分析工具,能夠顯示較全的系統(tǒng)資源信息,包括系統(tǒng)負(fù)載,CPU 利用分布情況,內(nèi)存使用,進程資源占用情況等。
如下示例:

top - 15:20:14 up 8 days,  2:19,  1 user,  load average: 0.27, 0.16, 0.11
Tasks: 1060 total,   1 running, 1059 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem : 522534.9 total, 501706.3 free,   6081.8 used,  14746.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used. 509887.0 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                                                                                 6710 root      20   0 8875200 191104  62528 S  11.6   0.0 764:24.32 kubelet                                                                                                                                                                                                 4030 openvsw+  10 -10 8359168 315392  19072 S   2.6   0.1 313:08.86 ovs-vswitchd                                                                                                                                                                                            7172 root      20   0    9.8g 262080 105664 S   1.0   0.0 147:18.81 etcd                                                                                                                                                                                                    
2601183 root      20   0  225152   8256   3648 R   0.7   0.0   0:02.56 top                                                                                                                                                                                                     13 root      20   0       0      0      0 I   0.3   0.0  14:45.23 rcu_sched                                                                                                                                                                                               7095 root      20   0  288384  68736   9856 S   0.3   0.0  33:01.24 python                                                                                                                                                                                                  
2582570 root      20   0       0      0      0 I   0.3   0.0   0:00.97 kworker/u194:2-flush-251:0                                                                                                                                                                              1 root      20   0   27264  16768   8448 S   0.0   0.0   0:59.07 systemd                                                                                                                                                                                                 2 root      20   0       0      0      0 S   0.0   0.0   0:03.97 kthreadd 

這里主要看進程的 CPU%, MEM% 和 load averge 字段。

2 CPU% 字段

該字段指示了進程在一段時間內(nèi)的 CPU 利用情況,即 cpu 使用的時間比例。
不同平臺 top 命令中 cpu 利用率計算方式可能不同,不過大致邏輯是統(tǒng)計程序在用戶態(tài)和內(nèi)核態(tài)的運行時間除以從啟動運行到當(dāng)前時刻的時間,或者是通過采樣某個時間段內(nèi)任務(wù)的運行時間總和算出某個區(qū)間內(nèi)的cpu利用率,下面是一種簡單算法:
通過 /proc/PID/stat 讀取任務(wù)在用戶態(tài)的運行時間 utime,內(nèi)核態(tài)運行時間 stime,任務(wù)開始運行時間 starttime,以及系統(tǒng)的 boot 時間 uptime
接著根據(jù) cpu% = (utime + stime) * 100 / (HZ * (uptime - starttime)) 計算得到一個 cpu 的利用率。
簡單腳本如下:

#!/bin/bashpid=$1 # 進程 ID
uptime=$(cut -d' ' -f1 /proc/uptime)  # 系統(tǒng)運行時間
stat=$(< /proc/$pid/stat)  # 進程狀態(tài)信息
utime=$(echo $stat | cut -d' ' -f14)  # 進程用戶態(tài)運行時間
stime=$(echo $stat | cut -d' ' -f15)  # 進程內(nèi)核態(tài)運行時間
starttime=$(echo $stat | cut -d' ' -f22)  # 進程開始時間
echo "start time $starttime"
hz=$(getconf CLK_TCK)  # 系統(tǒng)時鐘頻率
totaltime=$((utime + stime))  # 進程總運行時間
seconds=$(echo "scale=2; ($uptime - $starttime / $hz)" | bc)  # 經(jīng)過的秒數(shù)
cpuusage=$(echo "scale=2; 100 * $totaltime / ($hz * $seconds)" | bc)  # CPU 利用率
echo "進程 $pid 的 CPU 利用率為 $cpuusage %"

測試程序:

#include <stdio.h>int main()
{while (1) {int count = 0;for (;;) {count++;if (count % 10000 == 0)break;}usleep(10);}
}進程 5764 的 CPU 利用率為 20.63 %

需要注意上述算法是一個簡單算法,演示了 top 中 cpu 利用率的一個計算方式,實際代碼中使用時間采樣等方式獲取到更加精確的 cpu 利用率。

3 MEM% 字段

該字段顧名思義統(tǒng)計的是任務(wù)的內(nèi)存使用率,那么該值如何計算呢,又是統(tǒng)計的哪部份的內(nèi)存占用呢?如下:
首先我們可以使用 ps aux --sort=-%mem 統(tǒng)計下系統(tǒng)中內(nèi)存占用率最高的任務(wù),ps 的統(tǒng)計和 top 的統(tǒng)計計算方式一致。

[root@node-2 ~]# ps aux --sort=-%mem
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ceph     28122  7.1  1.5 5205592 4071872 ?     Ssl  Jul11 125:17 /usr/bin/ceph-osd --cluster ceph -f -i 16 --setuser ceph --setgroup dis
ceph     25883  7.1  1.5 5232948 4059848 ?     Ssl  Jul11 124:00 /usr/bin/ceph-osd --cluster ceph -f -i 15 --setuser ceph --setgroup dis
ceph     23865  6.4  1.5 5220840 4041976 ?     Ssl  Jul11 111:47 /usr/bin/ceph-osd --cluster ceph -f -i 19 --setuser ceph --setgroup dis
ceph     35957  9.0  1.5 5391688 4021308 ?     Ssl  Jul11 158:26 /usr/bin/ceph-osd --cluster ceph -f -i 14 --setuser ceph --setgroup dis
ceph     18263  6.9  1.5 5307556 4018768 ?     Ssl  Jul11 120:55 /usr/bin/ceph-osd --cluster ceph -f -i 18 --setuser ceph --setgroup dis
ceph     20412  7.4  1.4 5111476 3902512 ?     Ssl  Jul11 129:37 /usr/bin/ceph-osd --cluster ceph -f -i 17 --setuser ceph --setgroup dis
diag     62902 20.8  1.0 36009096 2877676 ?    Ssl  Jul11 361:02 /bin/prometheus --web.console.templates=/etc/prometheus/consoles --web.
root     19200  0.6  0.6 2829756 1663784 ?     SLl  Jul11  11:44 mongod -f /etc/mongod.conf --auth
root     16180 59.3  0.6 2359060 1623320 ?     Ssl  Jul11 1037:53 /kube-apiserver --advertise-address=10.50.1.5 --etcd-servers=https://1
root     48824  0.4  0.5 1858596 1511388 ?     Sl   Jul11   7:35 ovsdb-server -vconsole:info -vsyslog:off -vfile:off --log-file=/var/log
systemd+ 48377  1.5  0.5 6644228 1378636 ?     Sl   Jul11  27:22 /usr/sbin/mysqld --wsrep-new-cluster
systemd+ 26533  0.5  0.4 1389572 1089968 ?     Ssl  Jul11   9:08 memcached -v -u memcache -p 11211 -U 0 -c 60000 -m 1024 -I 128m
ceph     20098  1.2  0.3 1558396 988656 ?      Ssl  Jul11  22:31 /usr/bin/ceph-mon --cluster ceph --setuser ceph --setgroup ceph -f -i n
ceph      6832  1.6  0.3 2072256 890892 ?      Ssl  Jul11  29:30 /usr/bin/ceph-osd --cluster ceph -f -i 20 --setuser ceph --setgroup dis
root     43596 68.5  0.3 23389276 866648 ?     Sl   Jul11 [root@node-3 ~]# free -htotal        used        free      shared  buff/cache   available
Mem:          251Gi       237Gi       7.9Gi       4.1Gi       5.8Gi       9.6Gi
Swap:            0B          0B          0B
[root@node-3 ~]# 

ps 和 top 命令中顯示的內(nèi)存信息來源于 /proc/pid/status 文件,該文件統(tǒng)計了進程使用的各類系統(tǒng)資源,其中 ps 和 top 顯示的內(nèi)存資源有 VSZRSS,對應(yīng) top 是 VIRTRES,對應(yīng) ps 是 VSZRSS。
VSZ 表示的是內(nèi)核申請的虛擬內(nèi)存總量,status 文件中用 VmSize 表示。RSS 表示匿名映射,文件映射,常駐shmem內(nèi)存(SysV shm,tmpfs和共享匿名映射)這三種映射的內(nèi)存,這三種駐留在內(nèi)存的數(shù)據(jù),也就是實際的物理內(nèi)存占用。
status 文件展示:

root@node-3 ~]# cat /proc/2698/status 
...
NSsid:  2698
VmPeak: 140968180 kB
VmSize: 140967424 kB
VmLck:  140933516 kB
VmPin:         0 kB
VmHWM:    492836 kB
VmRSS:    492836 kB
RssAnon:          464204 kB
RssFile:           28404 kB
RssShmem:            228 kB
VmData:   463656 kB
VmStk:       208 kB
VmExe:       116 kB
VmLib:     26932 kB
VmPTE:      1864 kB
VmSwap:        0 kB
HugetlbPages:   16777216 kB
CoreDumping:    0
Threads:        97
SigQ:   3/291773

這里順便說一下 free 命令計算空閑內(nèi)存的方式:
首先是 free 的內(nèi)存計算來自于 /proc/meminfo 文件,每個字段含義需要在內(nèi)核文檔 proc.txt 中確認(rèn):

[root@node-2 procps-ng-3.3.15]# cat /proc/meminfo 
MemTotal:       535137152 kB
MemFree:        518735680 kB
MemAvailable:   518809344 kB
Buffers:             192 kB
Cached:          6451136 kB
SwapCached:            0 kB
Active:          3429760 kB
Inactive:        5747264 kB
Active(anon):    2658816 kB
Inactive(anon):  4342784 kB
Active(file):     770944 kB
Inactive(file):  1404480 kB
Unevictable:      298688 kB
Mlocked:          298688 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               512 kB
Writeback:             0 kB
AnonPages:       3027200 kB
Mapped:           907264 kB
Shmem:           4367872 kB
KReclaimable:     298752 kB
Slab:            1624704 kB
SReclaimable:     298752 kB
SUnreclaim:      1325952 kB
KernelStack:      124608 kB
PageTables:        67968 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    267568576 kB
Committed_AS:   15039744 kB
VmallocTotal:   133009506240 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:     524288 kB
Hugetlb:               0 kB

free 命令 Used 計算源碼如下:

  mem_used = kb_main_total - kb_main_free - kb_main_cached - kb_main_buffers;if (mem_used < 0)mem_used = kb_main_total - kb_main_free;kb_main_used = (unsigned long)mem_used;

整理為 meminfo 文件內(nèi)容后如下:

Used = MemTotal - MemFree - Cached - SReclaimable - Buffers
(其中 SReclaimable 是 slab 中可回收內(nèi)存部分)

計算例子:

正常節(jié)點:total        used        free      shared  buff/cache   available
Mem:      535137152     9655488   518731584     4367872     6750080   518805248[root@node-2 procps-ng-3.3.15]# cat /proc/meminfo 
MemTotal:       535137152 kB
MemFree:        518735680 kB
MemAvailable:   518809344 kB
Buffers:             192 kB
Cached:          6451136 kB
SwapCached:            0 kB
Active:          3429760 kB
Inactive:        5747264 kB
Active(anon):    2658816 kB
Inactive(anon):  4342784 kB
Active(file):     770944 kB
Inactive(file):  1404480 kB
Unevictable:      298688 kB
Mlocked:          298688 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               512 kB
Writeback:             0 kB
AnonPages:       3027200 kB
Mapped:           907264 kB
Shmem:           4367872 kB
KReclaimable:     298752 kB
Slab:            1624704 kB
SReclaimable:     298752 kB
SUnreclaim:      1325952 kB
KernelStack:      124608 kB
PageTables:        67968 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    267568576 kB
Committed_AS:   15039744 kB
VmallocTotal:   133009506240 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:     524288 kB
Hugetlb:               0 kB根據(jù)公式計算 Used:
Used =  535137152 -  518735680 - 6451136 - 298752 - 192 = 9651392 符合

那么 Used 包括了其他所有內(nèi)存使用,包括 kernelstack,pagetable,buddy,slab 等等,基于此有另外兩個公式計算總內(nèi)存量:

MemTotal = MemFree+ [Slab + VmallocUsed + PageTables + KernelStack + HardwareCorrupted + Bounce + X] + [Active + Inactive + Unevictable + (HuagePage_Total * Hugepagesize)]= MemFree+ [Slab + VmallocUsed + PageTables + KernelStack + HardwareCorrupted + Bounce + X] + [Cached + AnonPages + Buffers +  (HuagePage_Total * Hugepagesize)]其中 X 代表 alloc_pages/__get_free_pages 接口分配的內(nèi)存,這部分不會統(tǒng)計到 meminfo 中。

按照上述規(guī)則計算 alloc_pages 使用量:

正常節(jié)點:518735680+ [1624704 + 0 + 67968 + 124608 + 0 + 0 + X]+ [3429760 + 5747264 + 298688 + 0] =  530028672buddy = 535137152 - 530028672 = 5108480 KB  4.87G518735680+ [1624704 + 0 + 67968 + 124608 + 0 + 0 + X]+ [6451136 + 3027200 + 192 + 0]= 530031488buddy = 535137152 - 530031488 = 5105664 KB 4.86G差不多正常節(jié)點 X = 4.87G,這部分被 alloc_pages 等使用,基本符合預(yù)期。

4 load average 平均負(fù)載

load average 字段統(tǒng)計了系統(tǒng)在 1分鐘/5分鐘/15分鐘的平均負(fù)載,其指標(biāo)根據(jù) cpu 數(shù)量有所不同,數(shù)值反應(yīng)了系統(tǒng)的整體負(fù)載情況,數(shù)值越高系統(tǒng)負(fù)載壓力越大。那么如何能夠更直觀的理解該負(fù)載呢?通過計算方式可以很好的理解其 load average 表達的含義。

load average 值來自于 /proc/loadavg 文件前三個數(shù)值,該值來自于內(nèi)核的 sched/loadavg.c calc_global_load 的計算得出,主要統(tǒng)計 1 分鐘,5 分鐘,15 分鐘內(nèi)的可運行任務(wù)數(shù)量 + 不可中斷睡眠任務(wù)(io wait 等)總和計算的平均負(fù)載。

其計算方式采用周期衰減舊負(fù)載并累加周期內(nèi)新負(fù)載,而更新周期窗口時間為 5s,即 5s 更新一次平均負(fù)載,并根據(jù)一定算法累加到 1分鐘/5分鐘/15分鐘。

公式大致如下:

...active = atomic_long_read(&calc_load_tasks);active = active > 0 ? active * FIXED_1 : 0;// 更新 1分鐘/5分鐘/15分鐘 平均負(fù)載avenrun[0] = calc_load(avenrun[0], EXP_1, active);avenrun[1] = calc_load(avenrun[1], EXP_5, active);avenrun[2] = calc_load(avenrun[2], EXP_15, active);
...// 其中使用的 EXP_n 為常量系數(shù)
EXP_n = 1/5/15 分鐘的常量系數(shù):
EXP_1        1884
EXP_5        2014
EXP_15       2037
FIXED_1      2048// 通過周期衰減舊負(fù)載 + 更新周期內(nèi)新負(fù)載得到現(xiàn)在的負(fù)載
now_load = old_load(1/5/15) * (EXP_n/FIXED_1) + new_load * (1 - EXP_n/FIXED_1)即通過周期間隔時間衰減老的平均負(fù)載 + 該周期內(nèi)的平均負(fù)載得到現(xiàn)在的平均負(fù)載(類似 pelt 算法)。
實際內(nèi)核計算代碼為:
/** a1 = a0 * e + a * (1 - e)*/
static inline unsigned long
calc_load(unsigned long load, unsigned long exp, unsigned long active)
{unsigned long newload;newload = load * exp + active * (FIXED_1 - exp);if (active >= load)newload += FIXED_1-1;return newload / FIXED_1;
}

其中 active 為通過周期統(tǒng)計采樣時間內(nèi)所有 cpu 的可運行任務(wù)數(shù)量 + 不可中斷睡眠任務(wù)數(shù)量總和 * FIXED_1 得到的新負(fù)載,如下:

long calc_load_fold_active(struct rq *this_rq, long adjust)
{long nr_active, delta = 0;// nr_active 統(tǒng)計了當(dāng)前 cpu 在該周期內(nèi)的任務(wù)數(shù)量并累加到 calc_load_tasks 中。// 不采用 for_each_prossble_cpu 來一次性統(tǒng)計的原因是:// 當(dāng)大型服務(wù)器上 cpu 的數(shù)量眾多,for_each 方式成本過大,所以采用周期統(tǒng)計累加形式。nr_active = this_rq->nr_running - adjust;nr_active += (long)this_rq->nr_uninterruptible;if (nr_active != this_rq->calc_load_active) {delta = nr_active - this_rq->calc_load_active;this_rq->calc_load_active = nr_active;}return delta;
}

上述公式可以這樣簡單理解:
比如計算 1分鐘 的平均負(fù)載,假設(shè) old_load 為 1024,當(dāng)前計算周期內(nèi)有1個任務(wù)可運行和一個任務(wù)為不可中斷睡眠任務(wù)(D 狀態(tài)任務(wù)),那么計算方式如下:

現(xiàn)在的負(fù)載 = 舊負(fù)載 1024 * 衰減系數(shù)(EXP_1/FIXED_1 = 1884/2048+ 2(兩個任務(wù))* FIXED_1(2048*1 - EXP_1/FIXED_1)

可以看到假設(shè)如果只有一個cpu下,并且一直一個任務(wù)一直運行,那么平均負(fù)載接近 cpu 數(shù)量接近為 1,此時可以說 cpu 繁忙。
因此隨著 cpu 數(shù)量的增多,平均負(fù)載繁忙的指標(biāo)也會增高,并且隨著負(fù)載衰減,在一個 8 核系統(tǒng)上,1 分鐘平均負(fù)載在 5 左右可以說系統(tǒng)處于略微繁忙,如果負(fù)載小于 1 可以說系統(tǒng)處于空閑。

http://www.risenshineclean.com/news/51524.html

相關(guān)文章:

  • 仿xss網(wǎng)站搭建個人網(wǎng)站制作
  • 西安網(wǎng)站開發(fā)哪家好教育機構(gòu)加盟
  • 石家莊網(wǎng)站建設(shè)培訓(xùn)班2022真實新聞作文400字
  • 網(wǎng)站網(wǎng)頁的收錄數(shù)量好的競價賬戶托管外包
  • 從網(wǎng)絡(luò)營銷角度做網(wǎng)站seo外包服務(wù)方案
  • 任丘網(wǎng)站優(yōu)化網(wǎng)站推廣名詞解釋
  • 免費ppt成品網(wǎng)站上海百度seo網(wǎng)站優(yōu)化
  • 北流建設(shè)局網(wǎng)站seo網(wǎng)站關(guān)鍵詞優(yōu)化工具
  • 一站式服務(wù)是什么意思網(wǎng)址和網(wǎng)站的區(qū)別
  • 上海 網(wǎng)站備案系統(tǒng)windows優(yōu)化大師會員兌換碼
  • 小程序開發(fā)費用計入什么科目seo服務(wù)商技術(shù)好的公司
  • 安康網(wǎng)站建設(shè)公司最新推廣注冊app拿傭金
  • 保健品網(wǎng)站設(shè)計短視頻營銷案例
  • 做戒指網(wǎng)站的logo照片想做個網(wǎng)絡(luò)推廣
  • 深圳做網(wǎng)站公司 南山廊坊百度推廣電話
  • 淘寶客網(wǎng)站備案信息百度指數(shù)有什么作用
  • 網(wǎng)站怎么做跳轉(zhuǎn)鏈接最近新聞今日頭條
  • 什么網(wǎng)站可以查建筑工程項目怎么在百度上發(fā)布信息廣告
  • 好用的代碼網(wǎng)站百度推廣優(yōu)化師是什么
  • 東莞常平二手房價最新消息重慶seo1
  • 網(wǎng)站手機版怎么做百度明星人氣榜入口
  • 教育培訓(xùn)有限公司可以多少錢注冊seo怎么優(yōu)化效果更好
  • 江西哪里有做電商網(wǎng)站的公司地推推廣方案
  • 教你做網(wǎng)站廣州網(wǎng)絡(luò)科技有限公司
  • 什么網(wǎng)站可以自學(xué)ps做貴賓卡廣告推廣免費
  • 西安建設(shè)工程信息平臺網(wǎng)絡(luò)優(yōu)化工程師為什么都說坑人
  • 運營說白了是什么意思珠海百度關(guān)鍵字優(yōu)化
  • 醫(yī)療器械做網(wǎng)站備案創(chuàng)建網(wǎng)站需要多少資金
  • 中國建設(shè)銀行官方網(wǎng)站首頁全網(wǎng)推廣的方式有哪些
  • 用美圖秀秀做網(wǎng)站圖片軟文營銷的定義