BENCHMARK / macOS
The DEXT benchmark needs local admin rights and therefore comes with the Pro version outside the App Store (Q2/27). It measures the data path inside the Mac: app, DriverKit driver and the macOS storage stack. Network and NAS are not involved (RAW loopback).
Measured on Apple Silicon (M1 and M5) with macOS 27 (Golden Gate) and on Intel (MacBook Pro 2019, i9). iSCSI4NAS runs on Apple Silicon with macOS 15 (Sequoia) and later and on Intel with macOS 13 (Ventura) to 26 (Tahoe).
Payload in Gbit/s, averaged over queue depths 4 to 128.
READ WRITE · Gbit/s
Screenshots from the app, exactly as the benchmark shows them.
| iSCSI4NAS (arm64) | iSCSI4NAS (Intel) | Dev (arm64) | Dev with KEXT (arm64) | |
|---|---|---|---|---|
| Mac | Apple (M1 & M5) | Apple (Intel i9) | Apple (M1 & M5) | Apple (M1 & M5) |
| macOS | 15 (Sequoia) and later | 13 (Ventura) to 26 (Tahoe) | 27.2 (Golden Gate) | 27 (Golden Gate) |
| Driver | DriverKit | DriverKit | DriverKit | DriverKit and KEXT |
| LUN format possible? | Disk Utility & CLI | Disk Utility & CLI | CLI only | Disk Utility & CLI |
| READ peak | 2.75 Gbit/s | 18.55 Gbit/s | 8.68 Gbit/s | 81.23 Gbit/s |
| READ average | 2.42 Gbit/s | 17.88 Gbit/s | 6.62 Gbit/s | 69.80 Gbit/s |
| READ low (QD 1) | 0.55 Gbit/s | 7.14 Gbit/s | 1.10 Gbit/s | 26.17 Gbit/s |
| WRITE peak | 2.67 Gbit/s | 18.84 Gbit/s | 6.97 Gbit/s | 84.81 Gbit/s |
| WRITE average | 2.34 Gbit/s | 18.21 Gbit/s | 5.80 Gbit/s | 69.83 Gbit/s |
| WRITE low (QD 1) | 0.55 Gbit/s | 7.17 Gbit/s | 1.09 Gbit/s | 23.72 Gbit/s |
Averaged over queue depths 4 to 128. For the KEXT run the app shows the average without stating the range.
iSCSI4NAS uses the SCSI controller path of DriverKit. Through it the driver receives every data buffer directly. macOS, however, prepares these buffers for DMA, meaning direct memory access by hardware. iSCSI4NAS has no hardware of its own. The CPU moves the data and the network carries it to the NAS. For a virtual controller, DMA preparation reliably maps only one memory page per request.
Intel Macs work differently. There a data block can be prepared in one piece. That is why iSCSI4NAS (Intel) reaches around 18 Gbit/s on average. This is pure driver performance (NULL DEXT), measured without network and NAS. On macOS 13 Ventura the value is just as high on comparable hardware. Intel processors are publicly documented, their IOMMU (VT-d) included. macOS has run on Intel since 2006 and the kernel has had around two decades to mature there. Apple Silicon has existed since 2020.
Apple Silicon uses its own address translation for every device. A virtual controller like the one in iSCSI4NAS is attached to no device. Larger data blocks are not reliable there. For Apple Silicon there is no public documentation at this level.
Still, iSCSI4NAS runs on Apple Silicon. Before the first line of the initiator, we spent almost three years working through the kernel and the CPU. In the end we “talked macOS and the CPU round”. iSCSI4NAS (arm64) delivers correct data this way and formatting from Disk Utility works. The price is throughput. Dev (arm64) shows the same hardware without this protective layer: it is faster, but formatting works from the CLI only.
The “Dev with KEXT” column shows what is possible without these limits: around 70 Gbit/s. That is pure driver performance as well (NULL DEXT). A kernel extension (KEXT) attaches directly to the kernel and helps it understand our driver better. In the picture of the house, iSCSI4NAS gets a key of its own. Apple, however, no longer grants the entitlements needed to develop and distribute KEXT drivers. This variant therefore cannot ship.
The causes lie in macOS and a driver cannot fix them. We reported them to Apple in Feedback reports, backed by kernel analyses, panic logs and captures of the network traffic. Apple asked us to keep the details confidential. We respect that.
As soon as macOS reliably handles larger data blocks for software controllers, we will raise the limit.
Until then iSCSI4NAS follows one rule:
Correct data before speed.
The benchmark is part of the Pro version and is also called the NULL DEXT.
It measures payload throughput in Gbit/s per queue depth. Peak and low are the extremes across all queue depths, the low value occurs at queue depth 1.
Since around 2013/2014, SOHO NAS systems have shipped with a default queue depth of 64. Values below and above QD 64 are interesting, but technically they hardly matter, if at all.
The test runs without network and NAS. The values show the throughput of the DEXT driver inside the Mac and are no statement about iSCSI throughput over the network.