Library libioil
dapat digunakan untuk meningkatkan performa operasi baca dan tulis
ke DFuse dari aplikasi yang menggunakan libc. Library mengabaikan
kernel dengan mencegat panggilan baca dan tulis POSIX dari aplikasi dan
melayaninya langsung di ruang pengguna.
Menggunakan libioil
Untuk menggunakan library intersepsi, tetapkan LD_PRELOAD
agar mengarah ke library bersama di direktori penginstalan DAOS:
LD_PRELOAD=/usr/lib64/libioil.so
Contoh:
$ dd if=/dev/zero of=./foo bs=1G count=20
20+0 records in
20+0 records out
21474836480 bytes (21 GB, 20 GiB) copied, 14.1946 s, 1.5 GB/s
$ LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=20
20+0 records in
20+0 records out
21474836480 bytes (21 GB, 20 GiB) copied, 5.0483 s, 4.3 GB/s
Anda juga dapat menautkan aplikasi dengan library intersepsi pada
waktu kompilasi dengan tanda -lioil
.
Memantau aktivitas
Untuk mengaktifkan laporan aktivitas untuk library intersepsi, tetapkan variabel lingkungan
D_IL_REPORT
. Tindakan ini menampilkan ringkasan singkat aktivitas di destruktor
library bersama, biasanya saat program keluar.
Nilai yang ditetapkan ke D_IL_REPORT
menentukan jumlah panggilan baca dan tulis
untuk mencatat ke stderr. Untuk mencatat semua panggilan, tetapkan nilai ke -1
. Untuk mencetak ringkasan
hanya saat program keluar, tetapkan nilai ke 0
.
Contoh:
$ D_IL_REPORT=1 LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=20
[libioil] Intercepting write of size 1073741824
20+0 records in
20+0 records out
21474836480 bytes (21 GB, 20 GiB) copied, 5.17297 s, 4.2 GB/s
$ D_IL_REPORT=3 LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=5
[libioil] Intercepting write of size 1073741824
[libioil] Intercepting write of size 1073741824
[libioil] Intercepting write of size 1073741824
5+0 records in
5+0 records out
5368709120 bytes (5.4 GB, 5.0 GiB) copied, 1.27362 s, 4.2 GB/s
$ D_IL_REPORT=-1 LD_PRELOAD=/usr/lib64/libioil.so dd if=/dev/zero of=./bar bs=1G count=5
[libioil] Intercepting write of size 1073741824
[libioil] Intercepting write of size 1073741824
[libioil] Intercepting write of size 1073741824
[libioil] Intercepting write of size 1073741824
[libioil] Intercepting write of size 1073741824
5+0 records in
5+0 records out
5368709120 bytes (5.4 GB, 5.0 GiB) copied, 1.29935 s, 4.1 GB/s
Beberapa program, termasuk sebagian besar utilitas GNU dari paket coreutils
, memiliki
fungsi destruktor untuk menutup stderr saat keluar. Artinya, meskipun
library intersepsi berfungsi untuk banyak perintah dasar seperti cp dan cat, Anda tidak
dapat melihat ringkasan yang dihasilkan oleh library intersepsi.