欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          linux系統(tǒng)緩存命中率分析工具

          緩存是現(xiàn)在所有高并發(fā)系統(tǒng)必需的核心模塊,主要作用就是把經(jīng)常訪問(wèn)的數(shù)據(jù)(也就是熱點(diǎn)數(shù)據(jù)),提前讀入到內(nèi)存中。這樣,下次訪問(wèn)時(shí)就可以直接從內(nèi)存讀取數(shù)據(jù),而不需要經(jīng)過(guò)硬盤(pán),從而加快應(yīng)用程序的響應(yīng)速度。

          這些獨(dú)立的緩存模塊通常會(huì)提供查詢(xún)接口,方便我們隨時(shí)查看緩存的命中情況。不過(guò) Linux 系統(tǒng)中并沒(méi)有直接提供這些接口,所以這里我要介紹一下,cachestat 和 cachetop ,它們正是查看系統(tǒng)緩存命中情況的工具。

          cachestat 提供了整個(gè)操作系統(tǒng)緩存的讀寫(xiě)命中情況。

          cachetop 提供了每個(gè)進(jìn)程的緩存命中情況。

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

          使用 cachestat 和 cachetop 前,我們首先要安裝 bcc 軟件包。比如,在 Ubuntu 系統(tǒng)中,你可以運(yùn)行下面的命令來(lái)安裝:

          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需要內(nèi)核版本為4.1或者更新的版本,如果你用的是CentOS,那就需要手動(dòng)升級(jí)內(nèi)核版本后再安裝。

          Centos7安裝bcc-tools第一步,升級(jí)內(nèi)核。你可以運(yùn)行下面的命令來(lái)操作:

          升級(jí)系統(tǒng)

          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

          安裝新內(nèi)核

          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

          重啟后確認(rèn)內(nèi)核版本已升級(jí)為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

          驗(yàn)證安裝成功

          cachestat 操作完這些步驟,bcc 提供的所有工具就都安裝到 /usr/share/bcc/tools 這個(gè)目錄中了。不過(guò)這里提醒你,bcc 軟件包默認(rèn)不會(huì)把這些工具配置到系統(tǒng)的 PATH 路徑中,所以你得自己手動(dòng)配置:$ export PATH=$PATH:/usr/share/bcc/tools

          配置完,你就可以運(yùn)行 cachestat 和 cachetop 命令了。比如,下面就是一個(gè) cachestat 的運(yùn)行界面,它以1秒的時(shí)間間隔,輸出了3組緩存統(tǒng)計(jì)數(shù)據(jù):

          $ 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 的輸出其實(shí)是一個(gè)表格。每行代表一組數(shù)據(jù),而每一列代表不同的緩存統(tǒng)計(jì)指標(biāo)。這些指標(biāo)從左到右依次表示:

          TOTAL ,表示總的 I/O 次數(shù);

          MISSES ,表示緩存未命中的次數(shù);

          HITS ,表示緩存命中的次數(shù);

          DIRTIES, 表示新增到緩存中的臟頁(yè)數(shù);

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

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

          接下來(lái)我們?cè)賮?lái)看一個(gè) cachetop 的運(yùn)行界面:

          $ 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 類(lèi)似,默認(rèn)按照緩存的命中次數(shù)(HITS)排序,展示了每個(gè)進(jìn)程的緩存命中情況。具體到每一個(gè)指標(biāo),這里的 HITS、MISSES和DIRTIES ,跟 cachestat 里的含義一樣,分別代表間隔時(shí)間內(nèi)的緩存命中次數(shù)、未命中次數(shù)以及新增到緩存中的臟頁(yè)數(shù)。

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

          指定文件的緩存大小除了緩存的命中率外,還有一個(gè)指標(biāo)你可能也會(huì)很感興趣,那就是指定文件在內(nèi)存中的緩存大小。你可以使用 pcstat 這個(gè)工具,來(lái)查看文件在內(nèi)存中的緩存大小以及緩存比例。

          pcstat 是一個(gè)基于 Go 語(yǔ)言開(kāi)發(fā)的工具,所以安裝它之前,你首先應(yīng)該安裝 Go 語(yǔ)言;

          安裝完 Go 語(yǔ)言,再運(yùn)行下面的命令安裝 pcstat:

          $ export GOPATH=~/go$ export PATH=~/go/bin:$PATH$ go get golang.org/x/sys/unix$ go get github.com/tobert/pcstat/pcstat

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

          $ pcstat /bin/ls+———+—————-+————+———–+———+| Name | Size (bytes) | Pages | Cached | Percent ||———+—————-+————+———–+———|| /bin/ls | 133792 | 33 | 0 | 000.000 |+———+—————-+————+———–+———+這個(gè)輸出中,Cached 就是 /bin/ls 在緩存中的大小,而 Percent 則是緩存的百分比。你看到它們都是 0,這說(shuō)明 /bin/ls 并不在緩存中。

          接著,如果你執(zhí)行一下 ls 命令,再運(yùn)行相同的命令來(lái)查看的話(huà),就會(huì)發(fā)現(xiàn) /bin/ls 都在緩存中了:

          $ ls$ pcstat /bin/ls+———+—————-+————+———–+———+| Name | Size (bytes) | Pages | Cached | Percent ||———+—————-+————+———–+———|| /bin/ls | 133792 | 33 | 33 | 100.000 |+———+—————-+————+———–+———+

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)