手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Ubuntu環境下測試Cache大小并校驗

[日期:2019-07-27] 來源:cnblogs.com/Jacob98  作者:Jacob98 [字體: ]

Cache存儲器:電腦中為高速緩沖存儲器,是位于CPU和主存儲器DRAM(Dynamic Random Access Memory)之間,規模較小,但速度很高的存儲器,通常由SRAM(Static Random Access Memory 靜態存儲器)組成。它是位于CPU與內存間的一種容量較小但速度很高的存儲器。CPU的速度遠高于內存,當CPU直接從內存中存取數據時要等待一定時間周期,而Cache則可以保存CPU剛用過或循環使用的一部分數據,如果CPU需要再次使用該部分數據時可從Cache中直接調用,這樣就避免了重復存取數據,減少了CPU的等待時間,因而提高了系統的效率。Cache又分為L1Cache(一級緩存)和L2Cache(二級緩存),L1Cache主要是集成在CPU內部,而L2Cache集成在主板上或是CPU上。

C++測試cache大小

代碼
/*
* 代碼思路:創建一個連續內存塊,進行連貫、大量、隨機的有意義訪問,要保證整塊內存盡可能全部放入cache。當
* 內存被整塊放入cache中時,訪問速度會明顯加快,直到有一個時間跳躍點,消耗時間增多,則這個跳躍點的存儲容* 量大小即為cache大小
*/

#include <iostream>
#include <random>
#include <ctime>
#include <algorithm>

#define KB(x) ((size_t)(x) << 10)

using namespace std;

int main()
{
    // 需要測試的數組的大小
    vector<size_t> sizes_KB;
    for (int i = 1; i < 18; i++)
    {
        sizes_KB.push_back(1 << i);
    }
    random_device rd;
    // 偽隨機數算法,計算更快,占用內存更少
    mt19937 gen(rd());

    for (size_t size : sizes_KB)
    {
        // 離散均勻分布類
        uniform_int_distribution<> dis(0, KB(size) - 1);
        // 創建連續內存塊
        vector<char> memory(KB(size));
        // 在內存中填入內容
        fill(memory.begin(), memory.end(), 1);
       
        int dummy = 0;
       
        // 在內存上進行大量的隨機訪問并計時
        clock_t begin = clock();
        // 1<<25:將1左移25位,進行大量隨機訪問
        for (int i = 0; i < (1 << 25); i++)
        {
            dummy += memory[dis(gen)];
        }
        clock_t end = clock();
       
        // 輸出
        double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
        cout << size << " KB, " << elapsed_secs << "secs, dummy:" << dummy << endl;
    }
}

運行結果

Ubuntu環境下測試Cache大小并校驗

解析

由運行結果可以看出,內存訪問時間在 8192KB 的時候發生了跳躍,由此推測cache的大小在 8192KB 左右,即8M左右,下面會進行驗證。

Ubuntu查看cahce大小

在命令行中輸入如下代碼:
getconf -a | grep CACHE

在本機環境中得到如下測試結果:

Ubuntu環境下測試Cache大小并校驗

6291456/1024/1024 = 6M,所以本機chche大小為6M,與代碼測試結果大體相符

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2019-07/159611.htm

linux
相關資訊       測試Cache大小 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台