v92 / libiorouter

libiorouter is LD_PRELOAD library for caching data and metadata requests from backend directory to local directory transparently to application.
GNU General Public License v3.0
6 stars 0 forks source link

libiorouter does not seems to cache anything. #25

Closed fff7d1bc closed 9 years ago

fff7d1bc commented 9 years ago

Hi,

libiorouter does not seems to work at all here.

I've set env variable LIBIOR_IO=yes, I have also modified libiorouter.h:

#define DEFAULT_SOCK_PATH "/dev/shm/libiorouter.sock"
#define DEFAULT_CACHEDIR "/dev/shm/io_cache/"
#define DEFAULT_REWRITEDIR "/home/"

then I've been testing few random binaries like sh, cat or vim with LD_PRELOAD set on the new libiorouter.so, no cache has been created in /dev/shm/io_cache/, also I've notice multiple failures while opening /dev/shm/io_cache//libiorouter. After manually creating it some .stats and .journal has been created there.

When checking on /home/piotr/.zshrc one of .stats files does indeed contain

libiorouter has been inicialized.
1436981265.768451 CALL open /home/piotr/.zshrc

However there seems to not be any cache in /dev/shm/io_cache/ at all.

v92 commented 9 years ago

Hi, thank you for reporting issue. It seems that you are trying to run it as a user 'piotr'. Make sure that you have read/write permissions to directory /dev/shm/io_cache/. If it would not work, send me please strace output of command.

fff7d1bc commented 9 years ago

Hello,

I do have permissions there. I also saw failing creat() for /dev/shm/io_cache//libiorouter/3794.stats so if I create the libiorouter dir under CACHEDIR manually, the stats and jounral files are created and never removed.

The full strace log of /bin/cat with libiorouter.so:

LD_PRELOAD=/home/piotr/src/libiorouter/libiorouter.so strace -f /bin/cat /home/piotr/bar
execve("/bin/cat", ["/bin/cat", "/home/piotr/bar"], [/* 79 vars */]) = 0
brk(0)                                  = 0x1718000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d8c000
open("/home/piotr/src/libiorouter/libiorouter.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "177ELF21100000000030>01000300%000000"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0700, st_size=70968, ...}) = 0
mmap(NULL, 2143120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f33d5960000
mprotect(0x7f33d596a000, 2093056, PROT_NONE) = 0
mmap(0x7f33d5b69000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7f33d5b69000
mmap(0x7f33d5b6b000, 912, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f33d5b6b000
close(3)                                = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=147300, ...}) = 0
mmap(NULL, 147300, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f33d5d68000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "177ELF21130000000030>01000p1200000"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1705856, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d67000
mmap(NULL, 3813312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f33d55bd000
mprotect(0x7f33d5756000, 2097152, PROT_NONE) = 0
mmap(0x7f33d5956000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x199000) = 0x7f33d5956000
mmap(0x7f33d595c000, 16320, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f33d595c000
close(3)                                = 0
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "177ELF21100000000030>0100034016000000"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14416, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f33d53b9000
mprotect(0x7f33d53bb000, 2097152, PROT_NONE) = 0
mmap(0x7f33d55bb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f33d55bb000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d66000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d65000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d64000
arch_prctl(ARCH_SET_FS, 0x7f33d5d65700) = 0
mprotect(0x7f33d5956000, 16384, PROT_READ) = 0
mprotect(0x7f33d55bb000, 4096, PROT_READ) = 0
mprotect(0x7f33d5b69000, 4096, PROT_READ) = 0
mprotect(0x60b000, 4096, PROT_READ)     = 0
mprotect(0x7f33d5d8d000, 4096, PROT_READ) = 0
munmap(0x7f33d5d68000, 147300)          = 0
getpid()                                = 3794
open("/proc/3794/comm", O_RDONLY)       = 3
read(3, "catn", 4096)                  = 4
close(3)                                = 0
brk(0)                                  = 0x1718000
brk(0x1739000)                          = 0x1739000
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2705, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2705, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d8b000
read(3, "TZif2000000000000000000v000v0000"..., 4096) = 2705
lseek(3, -1707, SEEK_CUR)               = 998
read(3, "TZif2000000000000000000v000v0000"..., 4096) = 1707
close(3)                                = 0
munmap(0x7f33d5d8b000, 4096)            = 0
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 110) = 0
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 54, MSG_NOSIGNAL, NULL, 0) = 54
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 157, MSG_NOSIGNAL, NULL, 0) = 157
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 111, MSG_NOSIGNAL, NULL, 0) = 111
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 85, MSG_NOSIGNAL, NULL, 0) = 85
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 75, MSG_NOSIGNAL, NULL, 0) = 75
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 65, MSG_NOSIGNAL, NULL, 0) = 65
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 69, MSG_NOSIGNAL, NULL, 0) = 69
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 141, MSG_NOSIGNAL, NULL, 0) = 141
sendto(3, "<11>Jul 16 12:42:23 cat: libioro"..., 55, MSG_NOSIGNAL, NULL, 0) = 55
creat("/dev/shm/io_cache//libiorouter/3794.stats", 0646) = -1 ENOENT (No such file or directory)
rt_sigaction(SIGTTIN, {0x7f33d59626fe, [TTIN], SA_RESTORER|SA_RESTART, 0x7f33d55f0b80}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTTOU, {0x7f33d596273c, [TTOU], SA_RESTORER|SA_RESTART, 0x7f33d55f0b80}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGURG, {0x7f33d59626c0, [URG], SA_RESTORER|SA_RESTART, 0x7f33d55f0b80}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPROF, {0x7f33d59631e9, [PROF], SA_RESTORER|SA_RESTART, 0x7f33d55f0b80}, {SIG_DFL, [], 0}, 8) = 0
open("/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2207776, ...}) = 0
mmap(NULL, 2207776, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7f33d519d000
close(4)                                = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
access("/dev/shm/io_cache//home/piotr/bar.whiteout", F_OK) = -1 ENOENT (No such file or directory)
open("/home/piotr/bar", O_RDONLY)       = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=4, ...}) = 0
fadvise64(4, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f33d5d6a000
read(4, "foon", 131072)                = 4
write(1, "foon", 4foo
)                    = 4
read(4, "", 131072)                     = 0
munmap(0x7f33d5d6a000, 139264)          = 0
close(4)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

ultimately I'd like to use libiorouter with gcc, that uses some headers and libs from NFS share which have huge impact on performance.

fff7d1bc commented 9 years ago

Okey so it seems to be filling system logger with useful info.

I have to setup LIBIOR_IO to on and not yes, the readme is wrong on this one. With LIBIOR_IO=on it does works.

v92 commented 9 years ago

Sorry for misleading README, I have fixed that.

Let me know if you need anything in case it does not work as expected.