Question on low execl() performance (2.0.x kernels)

Stephen Costaras (stevecs@chaven.com)
Thu, 3 Apr 1997 10:44:29 -0600 (CST)


I hope I have the right mail-list for this. If not please kindly re-direct
me. Due to the nature of the question I couldn't think of anywhere else
where people might know the answer. (tried the newsgroups already).

I for the past couple months I've been noticing a sluggish response with Apache
on my main server. This only started happening when I started getting 150,000
or so hits/day. Knowing that a Tyan S1668 Dual PPro w/ 128mb ram should easily
be able to handle several times that ammount I started searching for a problem.

With the help of the Linux/Byte Benchmark suite for unix systems I think I've
pin-pointed a problem with my exec() function. Here are stats from my system:

BYTE UNIX Benchmarks (Version 3.11)
System -- Linux news 2.0.29 #5 Mon Mar 31 04:11:03 CST 1997 i686 unknown
Start Benchmark Run: Mon Mar 31 05:16:13 CST 1997
2 interactive users.
[stuff snipped]
System Call Overhead Test 36162.8 lps (10 secs, 6 samples)
Pipe Throughput Test 59084.2 lps (10 secs, 6 samples)
Pipe-based Context Switching Test 24296.4 lps (10 secs, 6 samples)
Process Creation Test 1789.7 lps (10 secs, 6 samples)
Execl Throughput Test 235.4 lps (9 secs, 6 samples)
[stuff snipped]

I tested this out on all of my systems (all Tyan S1668, PPro, 128mbram, kernels
2.0.27 through 2.0.29) with the following ccflags:
CFLAGS=-DTIME -m486 -funroll-loops -finline -fstrength-reduce -ffast-math -fomit-frame-pointer -O3

Now, I have seen results (posted on www.linuxnow.com and several other places for other systems
even P5 systems) that are running approx 2000-3000 lps for Execl throughput and a little higher
process creation tests. System in this case is not under load (0.0).

I have upgraded all core libraries/code (ld.so 1.9.1, binutils.2.7.0.9, gcc-2.7.2.1, libg++-2.7.2.1,
libc-5.4.23, kernel (2.0.29), et al. No difference before or after nor across any of my other
systems.

Does anyone have any idea WHY this is happening, or WHAT could cause this? I have 'patched'
my original problem with apache by playing with the lifespan of the spawned tasks but this is
still an issue why I'm only getting 1/10th the throughput here.

Stephen

-- 
"There are two types of light, the glow that illuminates, and the glare
that obscures."            -- James Thurber