[yocto] Some simple tests about pseudo performance

Xu, Dongxiao dongxiao.xu at intel.com
Thu Dec 9 19:09:36 PST 2010


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 


More information about the yocto mailing list