zoukankan      html  css  js  c++  java
  • 使用 FIO 对 PMEM 设备进行测试;解决问题 fio: engine libpmem not loadable;

    基础知识:

    FIO 工具使用:https://www.cnblogs.com/xuyaowen/p/fio-usage.html

    PMEM 模型:https://www.cnblogs.com/xuyaowen/p/nvm-programming-model.html

    博客参考:Running FIO with pmem engines

    设备概览:

    ➜  examples sudo ndctl list -N -D -u --regions -i
    {
      "dimms":[
        {
          "dev":"nmem1",
          "id":"8089-a2-1930-000008e9",
          "handle":"0x10",
          "phys_id":"0x45"
        },
        {
          "dev":"nmem3",
          "id":"8089-a2-1930-000011fe",
          "handle":"0x1010",
          "phys_id":"0x51"
        },
        {
          "dev":"nmem0",
          "id":"8089-a2-1930-00000b6f",
          "handle":"0",
          "phys_id":"0x43"
        },
        {
          "dev":"nmem2",
          "id":"8089-a2-1930-00000fc8",
          "handle":"0x1000",
          "phys_id":"0x4f"
        }
      ],
      "regions":[
        {
          "dev":"region1",
          "size":"252.00 GiB (270.58 GB)",
          "available_size":0,
          "type":"pmem",
          "numa_node":1,
          "iset_id":"0xc0f2eeb826532444",
          "mappings":[
            {
              "dimm":"nmem3",
              "offset":"0x10000000",
              "length":"0x1f80000000",
              "position":1
            },
            {
              "dimm":"nmem2",
              "offset":"0x10000000",
              "length":"0x1f80000000",
              "position":0
            }
          ],
          "persistence_domain":"memory_controller",
          "namespaces":[
            {
              "dev":"namespace1.0",
              "mode":"fsdax",
              "map":"dev",
              "size":"248.06 GiB (266.35 GB)",
              "uuid":"a4ec89a0-0b3c-4455-9528-25c73b635a51",
              "raw_uuid":"f42aca99-c2fa-4d4d-af09-95ea3815324e",
              "sector_size":512,
              "blockdev":"pmem1",
              "numa_node":1
            },
            {
              "dev":"namespace1.1",
              "mode":"raw",
              "size":0,
              "uuid":"00000000-0000-0000-0000-000000000000",
              "sector_size":512,
              "state":"disabled",
              "numa_node":1
            }
          ]
        },
        {
          "dev":"region0",
          "size":"252.00 GiB (270.58 GB)",
          "available_size":"252.00 GiB (270.58 GB)",
          "type":"pmem",
          "numa_node":0,
          "iset_id":"0x4840eeb8b8462444",
          "mappings":[
            {
              "dimm":"nmem1",
              "offset":"0x10000000",
              "length":"0x1f80000000",
              "position":1
            },
            {
              "dimm":"nmem0",
              "offset":"0x10000000",
              "length":"0x1f80000000",
              "position":0
            }
          ],
          "persistence_domain":"memory_controller",
          "namespaces":[
            {
              "dev":"namespace0.0",
              "mode":"raw",
              "size":0,
              "uuid":"00000000-0000-0000-0000-000000000000",
              "sector_size":512,
              "state":"disabled",
              "numa_node":0
            }
          ]
        }
      ]
    }

    JOB文件:修改自 LibpmemSeqR.fio  https://github.com/axboe/fio/blob/master/examples/libpmem.fio 

    #
    # run command for this workload:
    # numactl -N 1 fio Libpmemjob.fio
    # numactl -N 1 fio --output=Libpmemjob.json --output-format=json Libpmemjob.fio
    # 
    # it binds this FIO workload to CPU 1 only. It should be set according to /dev/pmem1 socket's number
    #
    [global]
    bs=4k
    thread
    group_reporting
    norandommap
    overwrite=1
    thinktime=0
    sync=1
    direct=1
    
    ioengine=libpmem
    iodepth=1
    
    # by yaowenxu
    # Preparing namespace with commands:
    # mkfs.ext4 /dev/pmem1
    # mount /dev/pmem1 /mnt/pmem/ -o dax
    #
    
    directory=/mnt/pmem/yx  # I'm working on directory; each of 'numjobs' gets its own file to work with
    size=10GB  # Each file will have this size; so in summary they will fill the whole namespace
    unlink=0
    
    time_based
    runtime=300
    ramp_time=30
    
    [libpmem-seqwrite]
    rw=write
    stonewall
    
    [libpmem-seqread]
    rw=read
    stonewall
    
    #[libpmem-randwrite]
    #rw=randwrite
    #stonewall
    
    #[libpmem-randread]
    #rw=randread
    #stonewall

    FIO版本:(需要对fio重新编译,开启libpmem引擎)

    libpmem engine
    IO engine that uses libpmem (part of PMDK collection) to write data and libc's memcpy to read. It requires PMDK >= 1.5.

    # 编译命令(fio脚本configure文件编写的稍微有些问题,不能正确配置ldflags和cflags,在此处我使用环境变量解决)
    yaowen@zju:~/packages/fio-fio-3.27$ export LDFLAGS='-L/home/yaowen/local/lib/'
    yaowen@zju:~/packages/fio-fio-3.27$ export CFLAGS='-I/home/yaowen/local/include/'
    yaowen@zju:~/packages/fio-fio-3.27$ ./configure --prefix=/home/yaowen/local

    # engines展示

    测试命令:(针对fsdax模式进行测试) 

    numactl -N 1 fio --output=Libpmemjob.json --output-format=json Libpmemjob.fio

    测试结果:测试数据我就不放了,如果需要技术交流,可以留言。

  • 相关阅读:
    系统维护相关问题
    Python环境维护
    哈希表解决字符串问题
    论文笔记二:《A Tutoral on Spectral Clustering》
    论文笔记之哈希学习比较--《Supervised Hashing with Kernels》《Towards Optimal Binary Code Learning via Ordinal Embedding》《Top Rank Supervised Binary Coding for Visual Search》
    Java中String、StringBuffer、StringBuilder的比较与源 代码分析
    浙大pat1040 Longest Symmetric String(25 分)
    浙大pat1039 Course List for Student(25 分)
    浙大pat---1036 Boys vs Girls (25)
    百炼oj-4151:电影节
  • 原文地址:https://www.cnblogs.com/xuyaowen/p/use-fio-to-test-pmem.html
Copyright © 2011-2022 走看看