[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[],[],null,["# Interception library\n\nThe `libioil` library can be used to improve the performance of read and write\noperations to DFuse from applications which use libc. The library bypasses the\nkernel by intercepting POSIX read and write calls from the application and\nservicing them directly in user-space.\n\nUsing libioil\n-------------\n\nTo use the interception library, set `LD_PRELOAD` to point to the shared\nlibrary in the DAOS install directory: \n\n LD_PRELOAD=/usr/lib64/libioil.so\n\nFor example: \n\n $ dd if=/dev/zero of=./foo bs=1G count=20\n 20+0 records in\n 20+0 records out\n 21474836480 bytes (21 GB, 20 GiB) copied, 45.6925 s, 470 MB/s\n\n $ LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=20\n 20+0 records in\n 20+0 records out\n 21474836480 bytes (21 GB, 20 GiB) copied, 15.735 s, 1.4 GB/s\n\nIt is also possible to link applications with the interception library at\ncompile time with the `-lioil` flag.\n\nFor evaluating performance using the interception library, see\n[Performance considerations](/parallelstore/docs/performance) and\n[Test performance](/parallelstore/docs/test-performance).\n\nMonitor activity\n----------------\n\nTo enable activity reports for the interception library, set the `D_IL_REPORT`\nenvironment variable. This returns a short summary of activity in the shared\nlibrary destructor, typically as a program exits.\n\nThe value assigned to `D_IL_REPORT` defines the number of read and write calls\nto log to stderr. To log all calls, set the value to `-1`. To print the summary\nat program exit only, set the value to `0`.\n\nFor example: \n\n $ D_IL_REPORT=1 LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=5\n [libioil] Intercepting write of size 1073741824\n 5+0 records in\n 5+0 records out\n 5368709120 bytes (5.4 GB, 5.0 GiB) copied, 4.13708 s, 1.3 GB/s\n\n $ D_IL_REPORT=3 LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=5\n [libioil] Intercepting write of size 1073741824\n [libioil] Intercepting write of size 1073741824\n [libioil] Intercepting write of size 1073741824\n 5+0 records in\n 5+0 records out\n 5368709120 bytes (5.4 GB, 5.0 GiB) copied, 4.18626 s, 1.3 GB/s\n\n $ D_IL_REPORT=-1 LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=5\n [libioil] Intercepting write of size 1073741824\n [libioil] Intercepting write of size 1073741824\n [libioil] Intercepting write of size 1073741824\n [libioil] Intercepting write of size 1073741824\n [libioil] Intercepting write of size 1073741824\n 5+0 records in\n 5+0 records out\n 5368709120 bytes (5.4 GB, 5.0 GiB) copied, 4.12114 s, 1.3 GB/s\n\nSome programs, including most GNU utilities from the `coreutils` package, have\na destructor function to close stderr on exit. This means that, while the\ninterception library works for many basic commands such as cp and cat, it's not\npossible to see the summary generated by the interception library."]]