日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下cache分析工具,cachestat、cachetop、pcstat-linux系统缓存命中率分析工具

發布時間:2025/3/17 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下cache分析工具,cachestat、cachetop、pcstat-linux系统缓存命中率分析工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

命中率越高,表示使用緩存帶來的收益越高,應用程序的性能也就越好。

緩存是現在所有高并發系統必需的核心模塊,主要作用就是把經常訪問的數據(也就是熱點數據),提前讀入到內存中。這樣,下次訪問時就可以直接從內存讀取數據,而不需要經過硬盤,從而加快應用程序的響應速度。

這些獨立的緩存模塊通常會提供查詢接口,方便我們隨時查看緩存的命中情況。

不過 Linux 系統中并沒有直接提供這些接口,所以這里我要介紹一下,cachestat 和 cachetop ,它們正是查看系統緩存命中情況的工具。

cachestat 提供了整個操作系統緩存的讀寫命中情況。

cachetop 提供了每個進程的緩存命中情況。

這兩個工具都是 bcc 軟件包的一部分,它們基于 Linux 內核的 eBPF(extended Berkeley Packet Filters)機制,來跟蹤內核中管理的緩存,并輸出緩存的使用和命中情況。

使用 cachestat 和 cachetop 前,我們首先要安裝 bcc 軟件包。比如,在 Ubuntu 系統中,你可以運行下面的命令來安裝:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD

echo "deb https://repo.iovisor.org/apt/xenial xenial main" | sudo tee /etc/apt/sources.list.d/iovisor.list

sudo apt-get update

sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r)

注意:bcc-tools需要內核版本為4.1或者更新的版本,如果你用的是CentOS,那就需要手動升級內核版本后再安裝。

Centos7安裝bcc-tools

第一步,升級內核。你可以運行下面的命令來操作:

升級系統

yum update -y

安裝ELRepo

安裝新內核

yum remove -y kernel-headers kernel-tools kernel-tools-libs

yum --enablerepo="elrepo-kernel" install -y kernel-ml kernel-ml-devel kernel-ml-headers kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel

更新Grub后重啟

grub2-mkconfig -o /boot/grub2/grub.cfg

grub2-set-default 0

reboot

重啟后確認內核版本已升級為4.20.0-1.el7.elrepo.x86_64

uname -r

第二步,安裝 bcc-tools:

安裝bcc-tools

yum install -y bcc-tools

配置PATH路徑

export PATH=$PATH:/usr/share/bcc/tools

驗證安裝成功

cachestat

操作完這些步驟,bcc 提供的所有工具就都安裝到 /usr/share/bcc/tools 這個目錄中了。不過這里提醒你,bcc 軟件包默認不會把這些工具配置到系統的 PATH 路徑中,所以你得自己手動配置:

$ export PATH=$PATH:/usr/share/bcc/tools

配置完,你就可以運行 cachestat 和 cachetop 命令了。比如,下面就是一個 cachestat 的運行界面,它以1秒的時間間隔,輸出了3組緩存統計數據:

$ cachestat 1 3

TOTAL MISSES HITS DIRTIES BUFFERS_MB CACHED_MB

2 0 2 1 17 279

2 0 2 1 17 279

2 0 2 1 17 279

你可以看到,cachestat 的輸出其實是一個表格。每行代表一組數據,而每一列代表不同的緩存統計指標。這些指標從左到右依次表示:

TOTAL ,表示總的 I/O 次數;

MISSES ,表示緩存未命中的次數;

HITS ,表示緩存命中的次數;

DIRTIES, 表示新增到緩存中的臟頁數;

BUFFERS_MB 表示 Buffers 的大小,以 MB 為單位;

CACHED_MB 表示 Cache 的大小,以 MB 為單位。

接下來我們再來看一個 cachetop 的運行界面:

$ cachetop

11:58:50 Buffers MB: 258 / Cached MB: 347 / Sort: HITS / Order: ascending

PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT%

13029 root python 1 0 0 100.0% 0.0%

它的輸出跟 top 類似,默認按照緩存的命中次數(HITS)排序,展示了每個進程的緩存命中情況。具體到每一個指標,這里的 HITS、MISSES和DIRTIES ,跟 cachestat 里的含義一樣,分別代表間隔時間內的緩存命中次數、未命中次數以及新增到緩存中的臟頁數。

而 READ_HIT 和 WRITE_HIT ,分別表示讀和寫的緩存命中率。

指定文件的緩存大小

除了緩存的命中率外,還有一個指標你可能也會很感興趣,那就是指定文件在內存中的緩存大小。你可以使用 pcstat 這個工具,來查看文件在內存中的緩存大小以及緩存比例。

pcstat 是一個基于 Go 語言開發的工具,所以安裝它之前,你首先應該安裝 Go 語言;

安裝完 Go 語言,再運行下面的命令安裝 pcstat:

$ export GOPATH=~/go

$ export PATH=~/go/bin:$PATH

$ go get golang.org/x/sys/unix

$ go get github.com/tobert/pcstat/pcstat

全部安裝完成后,你就可以運行 pcstat 來查看文件的緩存情況了。比如,下面就是一個 pcstat 運行的示例,它展示了 /bin/ls 這個文件的緩存情況:

$ pcstat /bin/ls

+---------+----------------+------------+-----------+---------+

| Name | Size (bytes) | Pages | Cached | Percent |

|---------+----------------+------------+-----------+---------|

| /bin/ls | 133792 | 33 | 0 | 000.000 |

+---------+----------------+------------+-----------+---------+

這個輸出中,Cached 就是 /bin/ls 在緩存中的大小,而 Percent 則是緩存的百分比。你看到它們都是 0,這說明 /bin/ls 并不在緩存中。

接著,如果你執行一下 ls 命令,再運行相同的命令來查看的話,就會發現 /bin/ls 都在緩存中了:

$ ls

$ pcstat /bin/ls

+---------+----------------+------------+-----------+---------+

| Name | Size (bytes) | Pages | Cached | Percent |

|---------+----------------+------------+-----------+---------|

| /bin/ls | 133792 | 33 | 33 | 100.000 |

+---------+----------------+------------+-----------+---------+

總結

以上是生活随笔為你收集整理的linux下cache分析工具,cachestat、cachetop、pcstat-linux系统缓存命中率分析工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。