Hello again,
I have noticed the disk drive on my server is not active much during testing
with curl-loader. I looked at the curl-loader log file and I think I
know what is
happening, but not how to change it. Let me describe what I think it is doing,
and then what I would like it to do.
1. What do I think it is doing now?
If I cycle through N URLs with 100 clients, the curl-loader will setup
all 100 clients to process the first URL, then it has them all do the
second URL, then it has them all do the third URL, etc. This means
that all clients are normally fetching the same file (I am using 100MB
files for testing). This means that I am testing networking but all
clients are pulling the same file so 99 of them are just pulling from
the cached copy.
Am I wrong?
2. What I want
If I have N URLs and 100 clients, I would like curl-loader to
if (process % N) == 0 then start on URL 0
if (process % N) == 1 then start on URL 1
if (process % N) == 2 then start on URL 2
(and then if I have more processes than URLs, wrap back to URL 0
when I reach URL N-1)
Why do I want this? This means that if I have a large set of URLs,
I can force the server to work hard at loading files from disk and get
a more realisitic load for my server (which will be a mirror archive that
I expect many people to use as their mirror source). This means that
normally the file a client wants is probably NOT in cache, and with
a collection of ISO images the filesystem cache will not be able to
hold everything and the disk will be busy.
curl-loader has already helped me solve many tuning problems on
my server about the firewall, ulimits, and kernel tunables. With the
ability to do the testing like I talked about in #2, I can also get a closer
simulation to the real load so when I go "live" I will know for sure
what number of clients is my maximum under heavy load instead of
just knowing how many will work if the data is all cached.
Maybe curl-loader can already do this, but I could not find this in the
sample configurations or the README, and I could not find a man page
to read. It's probably in there somewhere and I missed it?
|