JEDEC耐久性测试 - pynvme/pynvme GitHub Wiki

ioworker有很多参数,今天我们再来看两个新的输入参数,通过这两个参数,ioworker可以产生符合JEDEC要求的enterprise endurance workload,详见:https://www.jedec.org/sites/default/files/docs/JESD219.pdf

def test_ioworker_jedec_enterprise_workload(nvme0n1):
    distribution = [1000]*5 + [200]*15 + [25]*80  #L2
    iosz_distribution = {1: 4,  #L3
                         2: 1,
                         3: 1,
                         4: 1,
                         5: 1,
                         6: 1,
                         7: 1,
                         8: 67,
                         16: 10,
                         32: 7,
                         64: 3,
                         128: 3}

    nvme0n1.ioworker(io_size=iosz_distribution,  #L16
                     distribution = distribution,
                     lba_random=True,
                     read_percentage=0,
                     ptype=0xbeef, pvalue=100, 
                     time=10).start().close()    
  • L2. 将整个LBA空间等分为100个子区间,把10000个IO分配到这100个子区间。通过一个长度为100的List来定义这个分配。ioworker会按照这个比列,在不同的子区间产生对应数量的IO。
  • L3. 定义IO的不同大小,以及每个大小的IO占据的百分比。通过一个dict来定义这些信息,key是IO的大小,对应的value是产生IO数量的百分比。
  • L16. 上面这两个参数的定义遵循了JEDEC的要求,让ioworker产生相应的workload。

除了enterprise workload,pynvme也可以回放JEDEC提供的master trace:https://www.jedec.org/standards-documents/docs/jesd219a_mt