在測試前,理應瞭解本機所具備的特點,比如CPU頻率、記憶體頻率、記憶體大小,等等信息。 查看CPU用如下命令(多少個核,頻率,特性等): cat /proc/cpuinfo 查看記憶體用如下命令:(只有當前記憶體大小,已用空間等等,不能看到記憶體頻率) cat /proc/meminfo 要查看記憶體型號和頻率 ...
在測試前,理應瞭解本機所具備的特點,比如CPU頻率、記憶體頻率、記憶體大小,等等信息。
查看CPU用如下命令(多少個核,頻率,特性等):
cat /proc/cpuinfo
查看記憶體用如下命令:(只有當前記憶體大小,已用空間等等,不能看到記憶體頻率)
cat /proc/meminfo
要查看記憶體型號和頻率等信息,用如下的命令:
sudo dmidecode -t memory
查看cpu內核頻率命令:
cat /proc/cpuinfo |grep MHz|uniq
記憶體帶寬的計算公式是:帶寬=記憶體核心頻率×記憶體匯流排位數×倍增繫數。簡化公式為:標稱頻率*位數。比如一條DDR3 1333MHz 64bit的記憶體,理論帶寬為:1333*64/8=10664MiB/s = 10.6GiB/s
。
常用命令:
mbw -q -n 10 256
-n 10表示運行10次,256表示測試所用的記憶體大小,單位為MB。
mbw測試了MEMCPY、DUMB、MCBLOCK等方式的記憶體帶寬。從測試結果看,前2都差不多,最後一種測試得到的帶寬值比較高。
下麵是使用taskset指定CPU核心和運行mbw次數的腳本。真正使用到的是taskset命令,它可以指定程式在哪個CPU核上跑,在多核CPU上,是個不錯的工具。
taskset -cp 0,1 7460
[root@WQ mbw-master]# ./mbw -h
mbw memory benchmark v1.4, https://github.com/raas/mbw
Usage: mbw [options] array_size_in_MiB
Options:
-n: number of runs per test (0 to run forever)
-a: Don't display average
-t0: memcpy test 記憶體拷貝
-t1: dumb (b[i]=a[i] style) test 字元串拷貝
-t2: memcpy test with fixed block size 記憶體塊拷貝
-b <size>: block size in bytes for -t2 (default: 262144)
-q: quiet (print statistics only)
(will then use two arrays, watch out for swapping)
'Bandwidth' is amount of data copied over the time this operation took.
The default is to run all tests available.
mpstat -P ALL 2 2秒監視 [root@WQ mbw-master]# ./mbw -q -n 1 256 0 Method: MEMCPY Elapsed: 0.06992 MiB: 256.00000 Copy: 3661.327 MiB/s AVG Method: MEMCPY Elapsed: 0.06992 MiB: 256.00000 Copy: 3661.327 MiB/s 0 Method: DUMB Elapsed: 0.13613 MiB: 256.00000 Copy: 1880.569 MiB/s AVG Method: DUMB Elapsed: 0.13613 MiB: 256.00000 Copy: 1880.569 MiB/s 0 Method: MCBLOCK Elapsed: 0.10634 MiB: 256.00000 Copy: 2407.282 MiB/s AVG Method: MCBLOCK Elapsed: 0.10634 MiB: 256.00000 Copy: 2407.282 MiB/s