Currently, we use the following options in Intel Memory Latency Checker (MLC) for measuring local/remote sequential access bandwidth:
./mlc --loaded_latency -d0 -k1-47 -j3
The platform we have access to has 4 sockets, each socket has 48 cores. We would use -j0 instead of -j3 if we want to measure local b/w; additionally, we add “-U” to the above options for measuring local/remote random-access bandwidth. Our experimental platform also has about 1.5T of Optane DCPMM per socket, and a total DDR memory of 768G.
Above would work for Optane AppDirect (only using DRAM) and Memory modes; my question is:
In MLC, is there a way to specify memory to be initialized in PMEM of a NUMA node, in AppDirect KMEM-DAX and FS-DAX modes?
It is possible to measure bandwidth and latency for persistent memory using MLC. However, you need to a create a config file to describe the setup.
For example, create a file named mlc_1s_1pmem.cfg with content:
0-23 R seq 300000 pmem /mnt/pmem1
Then run MLC with command:
mlc --loaded_latency -T -d0 -t10 -omlc_1s_1pmem.cfg
This will measure the bandwidth for 24 threads (running on cores 0 to 23) for sequential read-only traffic coming from the app-direct memory mounted a /mnt/pmem1.
For details on the configuration file, please see the README file included in the MLC package.