首頁  >  問答  >  主體

c++ - 如何排除linux系统的读写缓存进行磁盘性能测试?

想测试一下我的ssd硬盘能达到多少的iops,但是读写的时候因为linux系统会自动将读写操作进行cache,也就没法真实的验证性能了,有没有办法可以把这个特性先关闭? 写操作还好办,可以每次写入之后调用fsync强制写入磁盘,读取有类似的方法么?
补充一下,我不是想直接用现有的工具进行测试,我是自己写了一个读写io的程序(c++),想测试一下对应的iops

高洛峰高洛峰2744 天前992

全部回覆(5)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 13:26:08

    找不到完全關閉的方法,讀取快取可以透過 echo 3 > /proc/sys/vm/drop_caches 暫時清除

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:26:08

    定時任務
    0 */1 * * * 根同步 && echo 3 > /proc/sys/vm/drop_caches

    回覆
    0
  • 迷茫

    迷茫2017-04-17 13:26:08

    dd 指令 後面加參數 ,具體可以Google 一下.或者,測試資料是記憶體的兩倍

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 13:26:08

    hdparm -W
    hdparm -t

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:26:08

    time dd if=/dev/zero of=test bs=64k count=512 oflag=dsync
    參數解釋:
    if 輸入檔
    of 輸出檔
    bs 一次讀取和寫入的bytes位元組數
    count 寫入資料塊的次數,也可以設為512.
    oflag=dsync 強制每次寫入實體硬碟,也就是不寫入快取,直接寫硬碟
    執行完畢後將在目前目錄產生一個32M(64*512)的test檔.
    固態硬碟達到70MB/秒,機械硬碟估計也就2MB/秒左右.

    回覆
    0
  • 取消回覆