Day 58 of 60: Developer benchmarks (pt 3)
Yesterday I looked at performance compiling Sendmail on Solaris and FreeBSD using Sun’s compiler (on Solaris) and gcc (on both systems).
In the tests gcc come out handily ahead, with gcc on FreeBSD being 16% faster than gcc on Solaris with low optimisation options, and 12% faster than gcc on Solaris with optimisation turned on. Sun’s compiler was over twice as slow as gcc on either system.
Today I’ve been looking at the time taken to compile Perl on both systems, using both compilers, with and without optimisation.
Day 55 of 60: Developer benchmarks (pt 1)
The last week has been quite busy with work that’s not related to this project. Mindful that the 60 day time limit is almost up, and aware that I’ve not done any actual benchmarking of this workstation — vis a vis “How does Solaris on this hardware compare against another OS on this system?”, I’ve started doing some investigation.
Sun bill this machine as a developer workstation, so I thought I’d look at how speedy it is at carrying out tasks that developers do. I also thought it would be worthwhile carrying out a few performance benchmarks relating to a real-world application that I currently run on Solaris.
Day 33 of 60: Strategies for processing the queue.
Note: If you’re not familiar with sendmail queues, the sendmail queue primer I wrote might be useful.
There are two aspects of mail queue management to consider with Sendmail. The first is the process that puts messages in the queue. I’ve looked at that in some detail already, and written a number of D scripts that should make it easy for you to instrument Sendmail on your production systems so you can decide how best to layout your queue directories for optimal inbound performance.
The flip side of the coin is to try and answer the question How do you maximise delivery from the queue?” This is a more complex question to answer, as the number of variables that you can control that affect this is much larger. Also, there’s more variability when delivering mail, as you are at the mercy, to some extent, of each remote site — how fast they process mail you send them, whether or not they’re actually up, how much latency there is between you and them, the speed of DNS lookups, and so on.
So, what can we test?
Day 29 of 60: What are the single queue directory bottlenecks?
Earlier posts have shown that using a single queue directory imposes a significant bottleneck when processing concurrent connections with Sendmail. Yesterday I posed some questions, and today I’ve started work on answering the first one.
The first question was:
What is responsible for the dramatic slow down in the single-queue case (test 4)?
Day 28 of 60: Instrumenting Sendmail queue file creation (pt 4)
Yesterday I looked at the effect of multiple queue directories when processing messages over a single connection.
Today I’ve been looking at how multiple queue directories can help when processing concurrent connections.
The methodology was identical to the previous tests. The only change was to the smtp-source(1) command line. The previous tests were run with -s 1, indicating one concurrent connection. These tests were run with -s 10, to force 10 concurrent connections.
Day 27 of 60: Instrumenting Sendmail queue file creation (pt 2)
It’s time to run an instrumented Sendmail, throw some messages at it, and see how it performs. Specifically, does the number of queue directories (on a single disk) make a significant impact on the time taken to create new entries in the queue?
Day 26 of 60: Instrumenting Sendmail queue file creation (pt 1)
I’ve (finally) got Sendmail built, zones configured, DTrace working for functions declared static, and a mechanism for creating test SMTP sessions.
So it’s time to start putting this together, instrumenting Sendmail, and seeing whether or not I can use this to prove (or disprove) some common advice given when configuring Sendmail.
First, I’m going to look at queue directories.
Day 8 of 60: Sendmail queues
The time has come to start adding DTrace functionality to Sendmail. Of course, there’s no point in just diving in and adding code left, right, and centre, so over the last couple of days I’ve been thinking about what I should be instrumenting first.