I first installed Windows and ran a benchmark on the samsung 950 Pro, and saw 2700 MBps read speed. I did this to confirm that the motherboard could use the full x4 lanes with NVME on the boot device.

In ubuntu, I'm seeing write speeds of 170-200MBps.

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:    16.04
Codename:   xenial

I then did a clean install of ubuntu, and ran a test using this technique. Here is the result:

$ sudo hdparm -Tt /dev/nvme0n1

 Timing cached reads:   23880 MB in  2.00 seconds = 11951.14 MB/sec
 Timing buffered disk reads: 5194 MB in  3.00 seconds = 1731.18 MB/sec

Here is the lspci:

$ lspci -vv -s 02:00.0
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller (rev 01) (prog-if 02 [NVM Express])
    Subsystem: Samsung Electronics Co Ltd NVMe SSD Controller
    Physical Slot: 2-1
    Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0, Cache Line Size: 32 bytes
    Interrupt: pin A routed to IRQ 39
    Region 0: Memory at fb210000 (64-bit, non-prefetchable) [size=16K]
    Region 2: I/O ports at e000 [size=256]
    Expansion ROM at fb200000 [disabled] [size=64K]
    Capabilities: <access denied>
    Kernel driver in use: nvme
    Kernel modules: nvme

I did some searching and found a related question here with no answers. Another post, here, has similar problems but no solution.

Any tips on troubleshooting?


Edit: to clarify, write speeds on windows were also blazing, well above 1500MBps


Hmmm the numbers you provide here are way larger than 170-200MB/s. However they are wrong.

In order to bypass the page cache, causing the reads to go directly from the drive into hdparm's buffers (ie "raw" I/O), you need to use the --direct parameter in hdparm. That is:

$ sudo hdparm -Tt --direct /dev/nvme0n1

That way your results will be lower but close the actual disk's performance.


Try command line (you may need to sudo apt install fio first):

fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=4 --runtime=60 --group_reporting

For additional details, see: https://askubuntu.com/a/991311/50254

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.