I’ve got an Optane 5800x with a Threadripper Pro Asus WRX80E set-up. I saw the youtube video that noted that this Asus board will only run PCIe 3.0 speeds for the U.2 ports So I took the recommendation to get a M.2 → U.2 adapter.
I think I got the one that yall even recommended: https://www.amazon.com/Ableconn-M2-U2-131-SFF-8643-Connector-PCIe-NVMe/dp/B01D2PXUQA/ref=sr_1_2_sspa?crid=17GED5DQF3FY1&keywords=ableconn+m.2+u.2&qid=1643272423&sprefix=ableconn+m.2+u.2%2Caps%2C95&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyRUFWMjNQS1pKT0g4JmVuY3J5cHRlZElkPUEwNDE4MjE1MVBLUlFSUUQ0TDZXOCZlbmNyeXB0ZWRBZElkPUEwMjUzMTU4MkJMTjkwWkJLTTFFQiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=
Well I did some basic tests with fio and I’m not seeing a ton of improvement:
Using the U.2 port on the mobo:
sudo tsc=$(journalctl -k | grep 'tsc: Refined TSC clocksource calibration:' | awk '{print $11}') taskset -c 0 t/io_uring -r30 -b512 -d128 -s32 -c32 -p1 -F1 -B1 -n1 -t1 -T${tsc}000 /dev/nvme8n1 >> ./optane_u2_direct_pcie3
Added file /dev/nvme8n1 (submitter 0)
polled=1, fixedbufs=1/0, register_files=1, buffered=0, QD=128
Engine=io_uring, sq_ring=128, cq_ring=128
submitter=0, tid=13134
IOPS=898K, BW=438MiB/s, IOS/call=32/31, inflight=(48)
IOPS=901K, BW=440MiB/s, IOS/call=32/32, inflight=(48)
IOPS=898K, BW=438MiB/s, IOS/call=32/32, inflight=(48)
IOPS=897K, BW=438MiB/s, IOS/call=32/31, inflight=(80)
IOPS=900K, BW=439MiB/s, IOS/call=32/32, inflight=(80)
IOPS=897K, BW=438MiB/s, IOS/call=32/32, inflight=(48)
IOPS=895K, BW=437MiB/s, IOS/call=32/31, inflight=(80)
IOPS=895K, BW=437MiB/s, IOS/call=32/31, inflight=(112)
IOPS=897K, BW=438MiB/s, IOS/call=32/32, inflight=(48)
IOPS=898K, BW=438MiB/s, IOS/call=32/31, inflight=(80)
IOPS=898K, BW=438MiB/s, IOS/call=32/32, inflight=(48)
IOPS=899K, BW=439MiB/s, IOS/call=32/31, inflight=(112)
IOPS=900K, BW=439MiB/s, IOS/call=32/32, inflight=(112)
IOPS=899K, BW=439MiB/s, IOS/call=32/32, inflight=(80)
IOPS=899K, BW=439MiB/s, IOS/call=32/31, inflight=(112)
IOPS=898K, BW=438MiB/s, IOS/call=32/32, inflight=(112)
IOPS=898K, BW=438MiB/s, IOS/call=32/32, inflight=(112)
IOPS=898K, BW=438MiB/s, IOS/call=32/32, inflight=(80)
IOPS=899K, BW=439MiB/s, IOS/call=32/32, inflight=(48)
IOPS=896K, BW=437MiB/s, IOS/call=32/31, inflight=(80)
IOPS=894K, BW=436MiB/s, IOS/call=32/31, inflight=(112)
IOPS=894K, BW=436MiB/s, IOS/call=32/32, inflight=(112)
IOPS=896K, BW=437MiB/s, IOS/call=32/32, inflight=(80)
IOPS=896K, BW=437MiB/s, IOS/call=32/32, inflight=(48)
IOPS=896K, BW=437MiB/s, IOS/call=32/31, inflight=(80)
IOPS=899K, BW=439MiB/s, IOS/call=31/32, inflight=(48)
IOPS=898K, BW=438MiB/s, IOS/call=32/31, inflight=(80)
IOPS=897K, BW=438MiB/s, IOS/call=32/32, inflight=(80)
IOPS=899K, BW=439MiB/s, IOS/call=32/32, inflight=(48)
Exiting on timeout
Maximum IOPS=901K
13134: Latency percentiles:
percentiles (usec):
| 1.0000th=[ 35159614], 5.0000th=[ 35539718], 10.0000th=[ 35919822],
| 20.0000th=[ 68798813], 30.0000th=[ 68798813], 40.0000th=[ 70319228],
| 50.0000th=[ 98066816], 60.0000th=[102628063], 70.0000th=[107189310],
| 80.0000th=[113270973], 90.0000th=[139118041], 95.0000th=[148240535],
| 99.0000th=[151281366], 99.5000th=[152801782], 99.9000th=[157363029],
| 99.9500th=[160403861], 99.9900th=[169526355]
Using the M.2 adapter:
sudo tsc=$(journalctl -k | grep 'tsc: Refined TSC clocksource calibration:' | awk '{print $11}') taskset -c 0 t/io_uring -r30 -b512 -d128 -s32 -c32 -p1 -F1 -B1 -n1 -t1 -T${tsc}000 /dev/nvme9n1 >> ./optane_m2_adapter_pci4
Using TSC rate 2694Hz
Added file /dev/nvme9n1 (submitter 0)
polled=1, fixedbufs=1/0, register_files=1, buffered=0, QD=128
Engine=io_uring, sq_ring=128, cq_ring=128
submitter=0, tid=5335
IOPS=915K, BW=446MiB/s, IOS/call=32/31, inflight=(80)
IOPS=918K, BW=448MiB/s, IOS/call=32/31, inflight=(112)
IOPS=914K, BW=446MiB/s, IOS/call=32/32, inflight=(112)
IOPS=916K, BW=447MiB/s, IOS/call=32/32, inflight=(112)
IOPS=918K, BW=448MiB/s, IOS/call=32/32, inflight=(80)
IOPS=915K, BW=447MiB/s, IOS/call=32/31, inflight=(112)
IOPS=917K, BW=448MiB/s, IOS/call=32/32, inflight=(80)
IOPS=919K, BW=448MiB/s, IOS/call=32/31, inflight=(112)
IOPS=919K, BW=448MiB/s, IOS/call=32/32, inflight=(112)
IOPS=918K, BW=448MiB/s, IOS/call=32/32, inflight=(80)
IOPS=917K, BW=447MiB/s, IOS/call=32/31, inflight=(112)
IOPS=915K, BW=447MiB/s, IOS/call=31/32, inflight=(80)
IOPS=915K, BW=447MiB/s, IOS/call=32/31, inflight=(112)
IOPS=918K, BW=448MiB/s, IOS/call=32/32, inflight=(80)
IOPS=917K, BW=447MiB/s, IOS/call=32/32, inflight=(48)
IOPS=922K, BW=450MiB/s, IOS/call=31/31, inflight=(112)
IOPS=926K, BW=452MiB/s, IOS/call=32/32, inflight=(80)
IOPS=921K, BW=449MiB/s, IOS/call=32/32, inflight=(48)
IOPS=922K, BW=450MiB/s, IOS/call=32/31, inflight=(80)
IOPS=922K, BW=450MiB/s, IOS/call=32/31, inflight=(112)
IOPS=920K, BW=449MiB/s, IOS/call=32/32, inflight=(112)
IOPS=921K, BW=450MiB/s, IOS/call=32/32, inflight=(112)
IOPS=921K, BW=450MiB/s, IOS/call=32/32, inflight=(48)
IOPS=923K, BW=450MiB/s, IOS/call=31/31, inflight=(80)
IOPS=928K, BW=453MiB/s, IOS/call=32/32, inflight=(80)
IOPS=923K, BW=450MiB/s, IOS/call=31/31, inflight=(20)
IOPS=922K, BW=450MiB/s, IOS/call=32/32, inflight=(112)
IOPS=921K, BW=449MiB/s, IOS/call=32/32, inflight=(80)
IOPS=922K, BW=450MiB/s, IOS/call=31/31, inflight=(80)
Exiting on timeout
Maximum IOPS=928K
5335: Latency percentiles:
percentiles (usec):
| 1.0000th=[ 34399407], 5.0000th=[ 34779511], 10.0000th=[ 34779511],
| 20.0000th=[ 66518189], 30.0000th=[ 67278397], 40.0000th=[ 68798813],
| 50.0000th=[ 95406088], 60.0000th=[ 99587231], 70.0000th=[104148479],
| 80.0000th=[110230142], 90.0000th=[136077209], 95.0000th=[145199704],
| 99.0000th=[146720119], 99.5000th=[148240535], 99.9000th=[152801782],
| 99.9500th=[155842614], 99.9900th=[175608018]
Has anybody else gotten over 1M IOPS on this mobo?
Ubuntu 20.04.1