fio 启动流程梳理

kun2022 / 2023-05-12 / 原文

  • main (main thread)
    • fio_backend
      • run_threads
        • loop jobs: backend.c#L2354
          • call job_setup backend.c#L2368
        • loop jobs: backend.c#L2406
          • pthread_create(thread_main, &job) backend.c#L2459
  • job_thread (thread_main) backend.c#L1626
    • td_io_init backend.c#L1803 ioengines.c#L462
      • td->io_ops->init(td)
    • init_io_u backend.c#L1254
      • loop iodepths backend.c#L1274
        • td->io_ops->io_u_init backend.c#L1302
    • do_io backend.c#L947
      • get_io_u io_u.c#L1768:14
        • set_io_u_file
          • fill_io_u
      • loop
        • io_u_submit
          • td_io_queue
            • td->io_ops->queue()
              • fio_posixaio_queue /engines/posixaio.c#LL136C26-L136C44
        • wait_for_completions backend.c#L415
          • io_u_queued_complete io_u.c#L2177
            • td_io_getevents
              • td->io_ops->getevents
                • fio_posixaio_getevents
            • ios_completed
              • td->io_ops->event(td, i);
                • fio_posixaio_event