Hi, I did some simple tests for pseudo performance.
I wrote a simple program which is repeatedly calling fopen, fflush, and fclose, which should be sensitive to pseudo/fakeroot since they trap the system calls. I run the program on native, fakeroot, and pseudo. int main() { FILE *fp; int i; for (i = 0; i < 1000000; i++) { fp = fopen("/tmp/12321.txt", "w"); fflush(fp); fclose(fp); } return 0; } Test results are: Native: 2.729 secs Fakeroot: 2.752 secs Pseudo: 51.814 secs We saw pseudo cost about 20 times of seconds than native and fakeroot. I did a profile when the program is running. From the following table we saw that a lot of cycles are within sqlite3 operations... I am wondering whether this point can be optimized? For example, is it workable to cache those database operations in memory and finally flush it into disk when pseudo exits? It's just a first thought and any suggestion and comment is welcome. Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 100000 samples % image name app name symbol name 693127 58.2980 no-vmlinux no-vmlinux /no-vmlinux 211108 17.7560 libsqlite3.so.0.8.6 libsqlite3.so.0.8.6 /usr/lib/libsqlite3.so.0.8.6 112269 9.4428 libc-2.10.1.so libc-2.10.1.so /lib/tls/i686/cmov/libc-2.10.1.so 16792 1.4124 [vdso] (tgid:28674 range:0xfd0000-0xfd1000) a.out [vdso] (tgid:28674 range:0xfd0000-0xfd1000) 15256 1.2832 libpthread-2.10.1.so libpthread-2.10.1.so pthread_mutex_lock 13163 1.1071 libpthread-2.10.1.so libpthread-2.10.1.so __pthread_mutex_unlock_usercnt 7386 0.6212 libpseudo.so libpseudo.so pseudo_client_op 6753 0.5680 libpseudo.so libpseudo.so pseudo_debug_real 6680 0.5618 pseudo pseudo pseudo_server_start 6663 0.5604 [vdso] (tgid:28676 range:0x8d6000-0x8d7000) pseudo [vdso] (tgid:28676 range:0x8d6000-0x8d7000) 5049 0.4247 pseudo pseudo pseudo_op 4906 0.4126 [vdso] (tgid:28467 range:0xd32000-0xd33000) a.out [vdso] (tgid:28467 range:0xd32000-0xd33000) 4427 0.3723 [vdso] (tgid:28607 range:0x5c0000-0x5c1000) a.out [vdso] (tgid:28607 range:0x5c0000-0x5c1000) 4391 0.3693 [vdso] (tgid:29027 range:0x6d0000-0x6d1000) a.out [vdso] (tgid:29027 range:0x6d0000-0x6d1000) 4188 0.3522 [vdso] (tgid:29172 range:0x41a000-0x41b000) a.out [vdso] (tgid:29172 range:0x41a000-0x41b000) 3584 0.3014 [vdso] (tgid:2411 range:0x892000-0x893000) a.out [vdso] (tgid:2411 range:0x892000-0x893000) 2985 0.2511 pseudo pseudo pseudo_debug_real 2921 0.2457 postgres postgres /usr/lib/postgresql/8.3/bin/postgres 2905 0.2443 vim.basic vim.basic /usr/bin/vim.basic 2449 0.2060 bash bash /bin/bash 2439 0.2051 libpseudo.so libpseudo.so fopen 2163 0.1819 [vdso] (tgid:28609 range:0x3da000-0x3db000) pseudo [vdso] (tgid:28609 range:0x3da000-0x3db000) 2096 0.1763 [vdso] (tgid:29029 range:0xfef000-0xff0000) pseudo [vdso] (tgid:29029 range:0xfef000-0xff0000) 2086 0.1755 libpseudo.so libpseudo.so pseudo_append_element 1917 0.1612 [vdso] (tgid:28469 range:0xe72000-0xe73000) pseudo [vdso] (tgid:28469 range:0xe72000-0xe73000) 1835 0.1543 libpseudo.so libpseudo.so wrap_fopen 1833 0.1542 libpseudo.so libpseudo.so pseudo_msg_receive 1819 0.1530 libpseudo.so libpseudo.so __lxstat64 1762 0.1482 libpseudo.so libpseudo.so __i686.get_pc_thunk.bx Thanks, Dongxiao _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto