oxidecomputer / oxidecomputer/crucible

Investigate write IO latency

Open
#1,902 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
260
Forks
34
Avg merge
2d 1h
Merged PRs (30d)
8

Description

When running a fio write workload from an ubuntu guest, I see some write outliers:
I have fio:

[global]
ioengine=libaio
direct=1
bs=4k
iodepth=32
rw=randwrite
numjobs=140

# This keeps us from destroying the disk label
# It also assumes we have a 5T disk
offset=1M
# Total size, 500m - 1024*1024
size=536869863424

[nvme2]
filename=/dev/disk/by-id/nvme-nvme.01de-637275746573742d6461746131--00000001

From dtrace -s /opt/oxide/crucible_utils/perf-vol.d
Updated to just look at one UUID:

  937ccd53-e8f0-4905-a8d6-e04df64a495f                write   467001

           value  ------------- Distribution ------------- count    
            4096 |                                         0        
            8192 |                                         36       
           16384 |                                         5554     
           32768 |@@@@@@@@@                                108436   
           65536 |@@@@@@@@@@@@@@@@@@@@@                    240371   
          131072 |@@@@@@                                   72052    
          262144 |@                                        10796    
          524288 |                                         186      
         1048576 |                                         10       
         2097152 |                                         0        
         4194304 |                                         0        
         8388608 |                                         64       
        16777216 |                                         152      
        33554432 |@                                        13778    
        67108864 |@                                        15566    
       134217728 |                                         0 

Some of those IOs are taking a bit longer. Worth investigations as well as what dtrace probes in propolis report.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the fio write workload from the issue on an Ubuntu guest and run /opt/oxide/crucible_utils/perf-vol.d, including its UUID-focused update. Compare the observed outliers with what dtrace probes in propolis report; done means identifying where the latency is introduced and documenting the result.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.