Storage
NVMe raw read
Lenovo Yoga 7 2-in-1 16ILL10 · Core Ultra 5 226V · 16 GB
One captured run per system
The 64 GiB partition Cosmos keeps model packs on, on the Lenovo Yoga 7 2-in-1's SSD, read 7 ways: runs of 64 MiB to 1 GiB scattered over 8–64 GiB, and one sequential pass. 5 of them land within 1% of 6.0 GB/s — the drive's own limit, below the PCIe 4.0 ×4 link's 7.9 GB/s raw rate. Each system reads through its fastest path: Kore's pack engine, and fio with io_uring, direct I/O and registered buffers.
- Laptop
- Lenovo Yoga 7 2-in-1 16ILL10
- CPU
- Intel Core Ultra 5 226V
- GPU
- Intel Arc 130V · Xe2 (integrated)
- Memory
- 16 GB, shared by CPU, GPU and NPU
- Storage
- SK hynix HFS512GEM4X182N · PCIe 4.0 ×4 NVMe
| Pattern | Cosmos | Ubuntu + fio | Δ | Comparison |
|---|---|---|---|---|
| Random64 MiB / 64 GiB | 5.78 | 5.559 | +4.0% | |
| Random1,024 MiB / 64 GiB | 6.01 | 5.916 | +1.6% | |
| SequentialContiguous · see note | 6.02 | 5.313 | +13.3% | |
| Random64 MiB / 8 GiB | 5.64 | 5.027 | +12.2% | |
| Random256 MiB / 16 GiB | 5.95 | 5.177 | +14.9% | |
| Random256 MiB / 64 GiB | 5.99 | 5.396 | +11.0% | |
| Random512 MiB / 64 GiB | 6.00 | 5.387 | +11.4% |
GB/s, decimal · group / span · bars share one scale from zero
Group = one contiguous read run, not the device I/O size. 12 GiB per case; the last case reads 18 GiB.
Sequential layouts differ: Kore declares one 64 GiB span; fio reads eight adjacent 1.5 GiB regions, one per job.
What each system ran
- Software
- CosmosKore pack engine (pack bench)
- Ubuntu + fioUbuntu 26.04.1 LTS · Linux 7.0.0-38 · fio 3.41
- Submission
- Cosmos4 NVMe rings, round robin
- Ubuntu + fioio_uring · 8 jobs × queue depth 16
- Transfer size
- Cosmos256 KiB — the controller's maximum transfer
- Ubuntu + fio128 KiB — the kernel's max_sectors_kb for this drive
- Buffers
- CosmosFunded and IOMMU-mapped before timing
- Ubuntu + fioO_DIRECT · fixed buffers · registered file
Commands for every case
fio, shared by every case
sudo fio --name=pack --filename=/dev/nvme0n1p6 --readonly --direct=1 --ioengine=io_uring --fixedbufs=1 --registerfiles=1 --thread --numjobs=8 --group_reporting --bs=128k --iodepth=16 --invalidate=0 --norandommap --randrepeat=0
- 64 MiB runs over 64 GiBkore › pack bench 4 64 3fio … --rw=randread:512 --ba=64M --size=64G --io_size=1536M
- 1,024 MiB runs over 64 GiBkore › pack bench 4 1024 3fio … --rw=randread:8192 --ba=1024M --size=64G --io_size=1536M
- Sequentialkore › pack bench 4 64 3 seqfio … --rw=read --size=1536M --offset_increment=1536M
- 64 MiB runs over 8 GiBkore › pack bench 4 64 3 span 8fio … --rw=randread:512 --ba=64M --size=8G --io_size=1536M
- 256 MiB runs over 16 GiBkore › pack bench 4 256 3 span 16fio … --rw=randread:2048 --ba=256M --size=16G --io_size=1536M
- 256 MiB runs over 64 GiBkore › pack bench 4 256 3 span 64fio … --rw=randread:2048 --ba=256M --size=64G --io_size=1536M
- 512 MiB runs over 64 GiBkore › pack bench 6 512 3 span 64fio … --rw=randread:4096 --ba=512M --size=64G --io_size=2304M
Evidence
(open full size)
(open full size)
(open full size)The raw terminal behind the storage results: seven pack bench runs over the 64 GiB pack partition.
How it was measured
- Same machine
- Every comparison ran on one laptop, with the same silicon, drive and model weights on each side. On metal, Cosmos and Ubuntu were booted in turn; a result that ran Cosmos as a guest says how the guest was set up.
- Current baseline
- Ubuntu 26.04.1 LTS on Linux 7.0.0-38 with the latest Intel Xe drivers, on both machines; llama.cpp 0.8, with native NVFP4 and expert-cache support; fio 3.41 with io_uring, direct I/O and registered buffers, as the storage result's commands show. Current releases, not old builds, with one exception: the 27B result's llama.cpp run used an earlier build whose version wasn't recorded, and its settings say so.
- Captured runs
- Each figure is one captured run, read off its screenshot — not an average of repeated runs.
- Native harnesses
- Each system is measured with its own tools: Cosmos's chat and pack bench; llama.cpp's web UI and fio on Ubuntu. Transfer sizes and scheduling are reported, not equalized.
- Units
- Storage in decimal GB/s (10⁹ bytes per second). Tokens per second as each runtime reports its own generation speed.
- Setup excluded
- Buffer allocation and registration happen before timing on both systems; Cosmos prints its setup time on a separate line.
More results
- Local inference32 GB RAM laptop: every weight resident in memory42.5 tok/s · 32 GB
- Local inference32 GB RAM laptop: Qwen3.8-27B, every weight resident24.0 tok/s · 32 GB
- Local inference16 GB RAM laptop: a model larger than its memory, streamed from SSD13.2 tok/s · 16 GB
- As a guest32 GB RAM laptop: Cosmos as a guest of Ubuntu, on one virtual function of the GPU37.9 tok/s · 32 GB