Document cache experiments, failed attempt to install lscpu

This commit is contained in:
Ciro Santilli
2018-02-26 17:42:49 +00:00
parent 68788a8f35
commit 19b55c57cc
2 changed files with 39 additions and 12 deletions

View File

@@ -1517,7 +1517,7 @@ On the other hand, the chip makers tend to upstream less, and the project become
===== GEM5 vs QEMU performance ===== GEM5 vs QEMU performance
We have benchmarked a Linux kernel boot with: We have benchmarked a Linux kernel boot at commit da79d6c6cde0fbe5473ce868c9be4771160a003b with the commands:
.... ....
# Try to manually hit Ctrl + C as soon as system shutdown message appears. # Try to manually hit Ctrl + C as soon as system shutdown message appears.
@@ -1679,35 +1679,56 @@ Check with:
cat /proc/cpuinfo cat /proc/cpuinfo
getconf _NPROCESSORS_CONF getconf _NPROCESSORS_CONF
.... ....
* Cache sizes: * Cache can in theory be checked with either of:
+
....
./run -a arm -c 2 -g -- --caches --l2cache
./run -a x86_64 -g -- --caches --l2cache --l2_size=$((1024*1024))
....
+
Check with:
+ +
.... ....
getconf -a | grep CACHE getconf -a | grep CACHE
lscpu
cat /sys/devices/system/cpu/cpu0/cache/index2/level cat /sys/devices/system/cpu/cpu0/cache/index2/level
cat /sys/devices/system/cpu/cpu0/cache/index2/size cat /sys/devices/system/cpu/cpu0/cache/index2/size
.... ....
+ +
Checking `level` is needed, for example `level0` and `level1` represented the same level on Linux 4.15. Checking `level` is needed, for example `level0` and `level1` represented the same level on Linux 4.15.
+ +
TODO: check not working. Breakdown: But TODO: those not working. Breakdown:
+ +
-- --
** arm QEMU and GEM5, x86 GEM5: `/sys` files don't exist, and `getconf` values empty ** arm QEMU and GEM5 (both `SimpleAtomic` or `HPI`), x86 GEM5: `/sys` files don't exist, and `getconf` values empty
** x86 QEMU: `/sys` files exist, but `getconf` values still empty ** x86 QEMU: `/sys` files exist, but `getconf` values still empty
-- --
+ +
We can also try to check simply by verifying if benchmarks are getting sped up by larger caches. However, we can do observe differences for certain setups, so it is also a matter of not communicating the caches sizes to the Linux kernel. Test command:
+
....
m5 resetstats && dhrystone 10000 && m5 dumpstats
....
+
GEM5 commands and cycle counts at commit da79d6c6cde0fbe5473ce868c9be4771160a003b:
+
....
# 11M
./run -a arm -g
./run -a arm -g -- --caches --l2cache
# 17-18M
./run -a arm -g -- --caches --cpu-type=HPI --l2cache --l2_size=2MB
# 43M
./run -a arm -g -- --caches --cpu-type=HPI --l1d_size=1024 --l2cache --l2_size=1024 --l3_size=1024
# 20M
./run -a x86_64 -g -- --caches --l1d_size=1024 --l2cache --l2_size=1024 --l3_size=1024
./run -a x86_64 -g -- --caches --l1d_size=1024MB --l2cache --l2_size=1024MB --l3_size=1024MB
....
+
From those results, we see that caches are effectively used in `HPI`, even though they don't show up correctly on the Linux kernel.
+
Other setups simply ignore the caches. TODO: find a setup that uses caches on x86.
+ +
Related: Related:
+ +
** http://gem5-users.gem5.narkive.com/4xVBlf3c/verify-cache-configuration ** http://gem5-users.gem5.narkive.com/4xVBlf3c/verify-cache-configuration
** https://www.quora.com/How-do-I-simulate-multi-level-caches-in-x86-architecture-using-Gem5-simulator
* Memory latency: TODO These look promising: * Memory latency: TODO These look promising:
+ +
.... ....
@@ -1717,6 +1738,8 @@ Related:
--mem-ranks=MEM_RANKS --mem-ranks=MEM_RANKS
--mem-size=MEM_SIZE --mem-size=MEM_SIZE
.... ....
+
TODO: now to verify this with the Linux kernel? Besides raw performance benchmarks.
* Disk and network latency: TODO These look promising: * Disk and network latency: TODO These look promising:
+ +
.... ....

View File

@@ -20,6 +20,10 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
# lscpu: TODO not installing?
BR2_PACKAGE_UTIL_LINUX=y
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
# Host GDB # Host GDB
BR2_GDB_VERSION="7.11.1" BR2_GDB_VERSION="7.11.1"
BR2_GDB_VERSION_7_10=n BR2_GDB_VERSION_7_10=n