FIO支持一大堆IO引擎 - 所有支持的引擎是目前的位置:https://github.com/axboe/fio/tree/master/enginesfio如何在啓動時加載各種io引擎?
我一直在試圖瞭解FIO作品的內部和就死在負載如何FIO所有IO引擎。
例如我看到每一個發動機具有使用以下方法
fio_syncio_register
註冊和註銷本身,例如sync.c寄存器和註銷的方法:https://github.com/axboe/fio/blob/master/engines/sync.c#L448
和fio_syncio_unregister
: https://github.com/axboe/fio/blob/master/engines/sync.c#L461
我的問題是誰調用這些方法?
爲了找到答案,我試圖運行FIO在gdb下 - 放置一個破發點中fio_syncio_register和主要功能,fio_syncio_register被連前主告訴我它是與__libc_csu_init
和回溯證實稱那
(gdb) bt
#0 fio_syncio_register() at engines/sync.c:450
#1 0x000000000047fb9d in __libc_csu_init()
#2 0x00007ffff6ee27bf in __libc_start_main (main=0x40cd90 <main>, argc=2, argv=0x7fffffffe608, init=0x47fb50 <__libc_csu_init>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe5f8)
at ../csu/libc-start.c:247
#3 0x000000000040ce79 in _start()
我花了一段時間閱讀有關__libc_csu_init
和__libc_csu_fini
和關於被飾以__attribute__((constructor))
方法每一個描述會談之前主要被調用,但在FIO sync.c的情況下,我沒有看到裝飾fio_syncio_register與__attribute__
有人可以幫助我理解這個流程的工作原理嗎?是否有其他材料我應該閱讀來理解這一點?
謝謝
哇我從來沒有想過這個,非常感謝你的努力。 – nachiappan