2

I am running Ubuntu 22.04.2 on a laptop with the following specifications:

SSD: HP S700 SSD
CPU: Intel Core i7 7700HQ
RAM: 16GB
Kernel: 5.19.0-32-generic

All system packages are updated to the latest versions as of 25/02/2023. Ubuntu is installed on an Ext4 partition, while my data is stored on an NTFS partition since it was created when using Windows 10. The SSD is recognized as /dev/sdb

Details of the SSD and partitions:
Output of hdparm -I /dev/sdb:

/dev/sdb:

ATA device, with non-removable media
    Model Number:       HP SSD S700 1TB                         
    Serial Number:      HASA42470101207     
    Firmware Revision:  V0823A0 
    Media Serial Num:   
    Media Manufacturer: 
    Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
    Used: unknown (minor revision code 0x011b) 
    Supported: 10 9 8 7 6 5 
    Likely used: 10
Configuration:
    Logical     max current
    cylinders   16383   16383
    heads       16  16
    sectors/track   63  63
    --
    CHS current addressable sectors:    16514064
    LBA    user addressable sectors:   268435455
    LBA48  user addressable sectors:  1953525168
    Logical  Sector size:                   512 bytes
    Physical Sector size:                   512 bytes
    Logical Sector-0 offset:                  0 bytes
    device size with M = 1024*1024:      953869 MBytes
    device size with M = 1000*1000:     1000204 MBytes (1000 GB)
    cache/buffer size  = unknown
    Form Factor: 2.5 inch
    Nominal Media Rotation Rate: Solid State Device
Capabilities:
    LBA, IORDY(can be disabled)
    Queue depth: 32
    Standby timer values: spec'd by Standard, no device specific minimum
    R/W multiple sector transfer: Max = 1   Current = 1
    Advanced power management level: 254
    DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
         Cycle time: min=120ns recommended=120ns
    PIO: pio0 pio1 pio2 pio3 pio4 
         Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
    Enabled Supported:
       *    SMART feature set
            Security Mode feature set
       *    Power Management feature set
       *    Write cache
       *    Look-ahead
       *    Host Protected Area feature set
       *    WRITE_BUFFER command
       *    READ_BUFFER command
       *    NOP cmd
       *    DOWNLOAD_MICROCODE
       *    Advanced Power Management feature set
       *    48-bit Address feature set
       *    Mandatory FLUSH_CACHE
       *    FLUSH_CACHE_EXT
       *    General Purpose Logging feature set
       *    WRITE_{DMA|MULTIPLE}_FUA_EXT
       *    {READ,WRITE}_DMA_EXT_GPL commands
       *    Segmented DOWNLOAD_MICROCODE
       *    Gen1 signaling speed (1.5Gb/s)
       *    Gen2 signaling speed (3.0Gb/s)
       *    Gen3 signaling speed (6.0Gb/s)
       *    Native Command Queueing (NCQ)
       *    Phy event counters
       *    READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
       *    DMA Setup Auto-Activate optimization
       *    Software settings preservation
       *    SMART Command Transport (SCT) feature set
       *    SANITIZE feature set
       *    BLOCK_ERASE_EXT command
       *    DOWNLOAD MICROCODE DMA command
       *    WRITE BUFFER DMA command
       *    READ BUFFER DMA command
       *    Data Set Management TRIM supported (limit 8 blocks)
Security: 
    Master password revision code = 65534
        supported
    not enabled
    not locked
        frozen
    not expired: security count
        supported: enhanced erase
    6min for SECURITY ERASE UNIT. 6min for ENHANCED SECURITY ERASE UNIT.
Checksum: correct

Output of df -aTh:

Filesystem     Type             Size  Used Avail Use% Mounted on
/dev/sdb2      ext4             162G   64G   90G  42% /
/dev/sdb1      fuseblk          760G  383G  378G  51% /mnt/DATA Laptop

Output of findmnt --fstab:

TARGET           SOURCE                                    FSTYPE OPTIONS
/                UUID=79debb50-d530-d801-70da-b150d530d801 ext4   errors=remount-ro
/mnt/DATA Laptop UUID=01D94304BCDF47E0                     ntfs   uid=1000,gid=1000,rw,user,exec,umask=000,x-gvfs-show

Performance difference between NTFS and Ext4 partitions:
When I ran a benchmark using KDiskMark on both partitions, I noticed a significant difference in performance between the NTFS and Ext4 partitions, especially for random read writes.

Output for /dev/sdb2:

                        KDiskMark (3.1.2): https://github.com/JonMagon/KDiskMark
                    Flexible I/O Tester (fio-3.28): https://github.com/axboe/fio
--------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
Sequential   1 MiB (Q=  8, T= 1):   517.054 MB/s [    504.9 IOPS] < 15813.82 us>
Sequential   1 MiB (Q=  1, T= 1):   500.349 MB/s [    488.6 IOPS] <  2044.34 us>
    Random   4 KiB (Q= 32, T= 1):   168.011 MB/s [  42002.8 IOPS] <   760.80 us>
    Random   4 KiB (Q=  1, T= 1):    28.314 MB/s [   7078.7 IOPS] <   139.87 us>

[Write]
Sequential   1 MiB (Q=  8, T= 1):   356.269 MB/s [    347.9 IOPS] < 24887.09 us>
Sequential   1 MiB (Q=  1, T= 1):   334.044 MB/s [    326.2 IOPS] <  2978.64 us>
    Random   4 KiB (Q= 32, T= 1):   184.879 MB/s [  46219.8 IOPS] <   665.75 us>
    Random   4 KiB (Q=  1, T= 1):    84.579 MB/s [  21144.9 IOPS] <    46.37 us>

Profile: Default
   Test: 1 GiB (x5) [Measure: 5 sec / Interval: 5 sec]
   Date: 2023-02-25 14:18:20
     OS: ubuntu 22.04 [linux 5.19.0-32-generic]

Output for /dev/sdb1:

                        KDiskMark (3.1.2): https://github.com/JonMagon/KDiskMark
                    Flexible I/O Tester (fio-3.28): https://github.com/axboe/fio
--------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
Sequential   1 MiB (Q=  8, T= 1):   484.235 MB/s [    472.9 IOPS] < 16879.14 us>
Sequential   1 MiB (Q=  1, T= 1):   494.241 MB/s [    482.7 IOPS] <  2068.27 us>
    Random   4 KiB (Q= 32, T= 1):    24.336 MB/s [   6084.1 IOPS] <  5255.13 us>
    Random   4 KiB (Q=  1, T= 1):    24.453 MB/s [   6113.4 IOPS] <   162.18 us>

[Write]
Sequential   1 MiB (Q=  8, T= 1):   313.461 MB/s [    306.1 IOPS] <  8380.51 us>
Sequential   1 MiB (Q=  1, T= 1):   313.816 MB/s [    306.5 IOPS] <   879.35 us>
    Random   4 KiB (Q= 32, T= 1):    78.391 MB/s [  19597.8 IOPS] <  1237.62 us>
    Random   4 KiB (Q=  1, T= 1):    77.982 MB/s [  19495.5 IOPS] <    37.17 us>

Profile: Default
   Test: 1 GiB (x5) [Measure: 5 sec / Interval: 5 sec]
   Date: 2023-02-25 14:14:16
     OS: ubuntu 22.04 [linux 5.19.0-32-generic]

Given that the NTFS partition is being recognized as a fuseblk system by df, I assume that the partition is being mounted using ntfs-3g instead of ntfs3, which is the new kernel driver. Will changing my fstab FSTYPE to ntfs3 as described here improve performance? Are there any other steps I can take to improve NTFS performance on Linux? If not, are there any ways to non-destructively convert an NTFS partition to Ext4?

Thank you in advance for your help and have a nice day.

Update:
Setting the FSTYPE to ntfs3 in /etc/fstab did indeed improve the performance a lot.

Output of KDiskMark for /dev/sdb1:

                        KDiskMark (3.1.2): https://github.com/JonMagon/KDiskMark
                    Flexible I/O Tester (fio-3.28): https://github.com/axboe/fio
--------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
Sequential   1 MiB (Q=  8, T= 1):   525.712 MB/s [    513.4 IOPS] < 15556.55 us>
Sequential   1 MiB (Q=  1, T= 1):   428.302 MB/s [    418.3 IOPS] <  2387.84 us>
    Random   4 KiB (Q= 32, T= 1):   237.324 MB/s [  59331.2 IOPS] <   538.66 us>
    Random   4 KiB (Q=  1, T= 1):    43.243 MB/s [  10810.8 IOPS] <    92.45 us>

[Write]
Sequential   1 MiB (Q=  8, T= 1):   495.466 MB/s [    483.9 IOPS] < 16344.70 us>
Sequential   1 MiB (Q=  1, T= 1):   372.929 MB/s [    364.2 IOPS] <  2591.59 us>
    Random   4 KiB (Q= 32, T= 1):   299.469 MB/s [  74867.4 IOPS] <   425.59 us>
    Random   4 KiB (Q=  1, T= 1):   135.961 MB/s [  33990.3 IOPS] <    27.96 us>

Profile: Default
   Test: 1 GiB (x5) [Measure: 5 sec / Interval: 5 sec]
   Date: 2023-02-25 15:45:46
     OS: ubuntu 22.04 [linux 5.19.0-32-generic]

However, if I change the mount option to ntfs3, I am unable to play any steam games on the partition which rely on proton. I can only run those games when I use the ntfs mount option which uses ntfs-3g.

Update 2:
I found a workaround to use ntfs3 with proton, so I will be keeping that flag in /etc/fstab. Any other suggestions for NTFS performance improvements or filesystem conversions from NTFS which are both non-destructive and compatible with both Windows 10 and Linux are welcome.

7
  • Why do you need that partition to be NTFS? Commented Feb 25, 2023 at 14:22
  • @MarcusMüller I don't mind converting the partition to another filesystem, but I need the process to be non-destructive, and the resulting filesystem must be compatible with both Windows and Linux. Commented Feb 25, 2023 at 16:07
  • 3
    @NikitaKipriyanov Then I'll have to make do with the ntfs3 driver in the kernel, which seems performant enough for my needs. Are there any guides on mounting options or kernel configurations to further optimize the driver? Commented Feb 25, 2023 at 17:18
  • 1
    Please elaborate on what you did regarding: I found a workaround to use ntfs3 with proton Commented Mar 15, 2024 at 13:11
  • 1
    @OlivierDulac I followed the instructions given here, making sure to store my compatdata folder in an Ext4 partition and create a symlink in my library folder. I initially had to symlink Proton as well, but that doesn't seem to be the case anymore. Commented Mar 16, 2024 at 14:23

1 Answer 1

-1

An old SATA SSD is used as indicated by your post. Using ntfs3 will not improve the performance for my case on Ubuntu 23.04 using an NVME SSD with an M.2 socket.

I got over 2000 MB/s using the auto file system type and the speed is about 1800 MB/s using ntfs3. The GUI version of KDiskMark is used.

I got around 7000 MB/s for my ext4 drive. Both SSD drives are plugged directly into the motherboard.

enter image description here

enter image description here

3
  • That's quite unexpected. I thought the new driver would perform better due to the lower overhead of being a kernel driver compared to a userspace driver. Did you verify that setting the mount option to auto used the ntfs-3g driver ? Commented Mar 16, 2024 at 14:29
  • I added images to show the results with ntfs-3g and ntfs3 specified explicitly. Commented Mar 18, 2024 at 6:28
  • In that case, have you checked the Arch Wiki to see if there are any potential formatting changes, system changes, kernel upgrades or firmware updates which might improve your performance? Commented Mar 28, 2024 at 8:08

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.