On Fri, 17 Aug 2001, Chris McDonough wrote:
Hi Giorgios,
Let me see if I understand the testing methodology and results... You generate load using your program, and while the program is running, you try to reload the page in a browser.. right?
Yes, that's right
Furthermore, your test results show that on Linux, the time it takes to reload the page under any of the tested loads is virtually the same, while on BSD, the time that it takes to reload the page appears to be related to the load in an O(n^2) way.
That's right again. I haven't produced any graphs to know if it is O(n^2) but it sure is non-linear.
I don't know the answer, but I just want to restate the findings in another way so that you can tell me if I'm misunderstanding them.
Well, apologies if I wasn't very clear...
- C
Giorgos Verigakis wrote:
Hello, I'm using Zope on FreeBSD and OpenBSD and I've noticed some serious performance issues. Since I hadn't experienced any problems at the past with Linux, I did some benchmarks.
I've written a small program that connects to Zope and tries to retrieve a non-existant URL (source code appended). While Linux performed almost linearly depending on the number of hits/sec, FreeBSD and OpenBSD performed exponential.
I did the following experiment: I installed a binary distribution of python-1.5.2 (pkg_add or apt-get) and I compiled Zope-2.3.3+HotFix from sources (with wo_pcgi.py). I entered Zope's management screen and expanded all folders. I ran the previous program and after about 1000 hits I reloaded the page and measured the time it gets to finish. The results are below:
|---------------------+------------+---------------+-------------+ | OS | Hit Rate* | Real hit rate | Reload time | | | (hits/sec) | (hits/sec) | (sec) | |---------------------+------------+---------------+-------------+ | | 30 | 20 | 13 | | Linux debian 2.2.19 | 50 | 33 | 16 | | | 100 | 38 | 16 | |---------------------+------------+---------------+-------------+ | | 30 | 20 | 10 | | FreeBSD 4.3-Release | 50 | 33 | 23 | | | 100 | 40 | 100 | |---------------------+------------+---------------+-------------+ | | 30 | 20 | 10 | | OpenBSD 2.9-Release | 50 | 33 | 15 | | | 100 | 50 | 285 | |---------------------+------------+---------------+-------------+ *The hit rate is the one passed as an argument to the program, while real hit rate was calculated according to Zope's log file.
All tests were ran on the same computer, a 600MHz Celeron with 192MB RAM
These tests were ran using the default Data.fs. When I use a real Data.fs + my products I even get time outs when I try to access the content. Why is there such a difference between the OSs? Do the BSD users of this list experience similar problems?
Giorgos Verigakis
------------------ 8< ------------------ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h>
int main(int argc, char *argv[]) { struct sockaddr_in sa; struct hostent *hp; int s; int i, t, len; unsigned long sleeptime; char request[128]; char *url="/foo";
if (argc != 4) { printf("Usage: %s <host> <port> <rate>\n", argv[0]); printf("rate in hits/sec\n"); exit(1); }
if ((hp = gethostbyname(argv[1])) == NULL) { printf("error looking up host\n"); exit(1); }
sprintf(request, "GET %s HTTP/1.0\015\012\015\012", url); len = strlen(request); sleeptime = (1 / atof(argv[3])) * 1000000;
bzero(&sa, sizeof(sa)); bcopy(hp->h_addr, (char *)&sa.sin_addr, hp->h_length); sa.sin_family = hp->h_addrtype; sa.sin_port = htons(atoi(argv[2]));
for (i = 0;; i++) { if (( s= socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) { printf("Socket error\n"); continue; }
if (connect(s, (struct sockaddr *) &sa, sizeof sa) < 0) { printf("Connection error\n"); close(s); continue; }
t = write(s, request, len); printf("i=%d: %d bytes\n", i, t);
usleep(sleeptime);
close(s); } } ------------------ 8< ------------------
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )