站長資訊網
        最全最豐富的資訊網站

        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 4052245BD4284CDDecho "deb https://repo.iovisor.org/apt/xenial xenial main" | sudo tee /etc/apt/sources.list.d/iovisor.listsudo apt-get updatesudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r)

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

        Centos7安裝bcc-tools第一步,升級內核。你可以運行下面的命令來操作:

        升級系統

        yum update -y

        安裝ELRepo

        rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

        安裝新內核

        yum remove -y kernel-headers kernel-tools kernel-tools-libsyum –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.cfggrub2-set-default 0reboot

        重啟后確認內核版本已升級為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 3TOTAL MISSES HITS DIRTIES BUFFERS_MB CACHED_MB2 0 2 1 17 2792 0 2 1 17 2792 0 2 1 17 279

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

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

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

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

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

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

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

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

        $ cachetop11:58:50 Buffers MB: 258 / Cached MB: 347 / Sort: HITS / Order: ascendingPID 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 |+———+—————-+————+———–+———+

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久亚洲中文字幕精品一区| 亚洲第一极品精品无码久久| 亚洲国产成人精品女人久久久 | 久久精品一区二区| 亚洲第一区精品观看| 国产偷亚洲偷欧美偷精品| 日韩精品专区在线影院重磅 | 国产精品无码久久四虎| 国产精品福利网站导航| 亚洲精品蜜桃久久久久久| 久久久久人妻精品一区三寸蜜桃 | 精品久久久久久中文字幕人妻最新| 无码人妻精品一区二区蜜桃百度 | 99久久久精品免费观看国产| 日韩精品无码久久一区二区三| 99视频在线精品国自产拍亚瑟| laowang在线精品视频| 久久国产热精品波多野结衣AV| 亚洲А∨精品天堂在线| 精品国产亚洲男女在线线电影| 91精品国产综合久久四虎久久无码一级 | 精品久久777| 97精品国产手机| 久久er99热精品一区二区| 亚洲国产精品乱码一区二区 | 9久热这里只有精品| 久久国产精品-久久精品| 91在线视频精品| 国产精品视频免费| 国产高清国产精品国产专区| 97久久久久人妻精品专区| 国产精品丝袜一区二区三区 | 国内精品在线视频| 国产精品国产精品国产专区不卡 | 欧美成人精品一区二区三区| 精品国产一区二区三区久久| 老司机99精品99| 6080亚洲精品午夜福利| 国产精品福利片免费看 | 四虎影视884a精品国产四虎| 久久成人国产精品二三区|