Home
jeffr_tech's Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Tuesday, June 26th, 2007

    Time Event
    3:44p
    Another sysbench update. This time I tested with tcmalloc. The peak performance is terrible however the scaling is much better. This supports the hypothesis that the regular glibc malloc is hitting a lot of kernel contention which tcmalloc avoids by largely avoiding the VM. It has some other scalability limiter however as it's not able to keep all CPUs busy.

    I can reliably hit 3200 tps with SCHED_SMP now. I will updated the graph with new SCHED_SMP numbers soon.

    See http://people.freebsd.org/~jeff/sysbench.png

    I have also tested write perf now! FreeBSD and Linux both suck in different ways. The winner isn't clear. I want to analyze that further and then I'll post with my findings.
    6:24p
    So I updated the image for the second time today to include Ingo's cfs scheduler. This kernel is from the rpm on his website. I double checked that it was not using tcmalloc at the time and switching back to a 2.6.21 kernel returned to the expected perf.

    Basically, it has the same performance as the FreeBSD 4BSD scheduler now. Which is to say the peak is terrible but it has virtually no dropoff and performs better under load than the default 2.6.21 scheduler.
    6:34p
    10 things I like about linux.
    I don't want people to get the impression that I am adversarial towards linux. In fact, I have been working with Linux kernel developers to help resolve this mysql issue. However, I've received a lot of hate mail about this blog. In response, I'm going to list 10 things here that I'm pleased with in the linux kernel.

    1) The page array in the sk_buff for fragments is cheaper than the extra cache misses of linked lists of headers for external data in bsd's mbufs.
    2) The page structure is way small.
    3) The radix tree in the address_space is a much more efficient algorithm than our splay tree for large objects.
    4) RCU.
    5) Memory zones and cheap contiguous physical address space allocations.
    6) The ability to do io directly to physical pages.
    7) I like the relatively simple NUMA support, best bang for the buck on modern minorly NUMA architectures.
    8) The interface for dealing with per-cpu data.
    9) The interface for setting cpu affinity for interrupts is very slick.
    10) Moving most config ifdefs out of the code and into headers makes code much cleaner.

    Please, comment with your favorite bits of the kernel.

    << Previous Day 2007/06/26
    [Calendar]
    Next Day >>

About LiveJournal.com

Advertisement