Library intersepsi

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.