lkml.org 
[lkml]   [2008]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: AIM7 40% regression with 2.6.26-rc1
From
Date

On Thu, 2008-05-08 at 09:39 +0200, Ingo Molnar wrote:
> * Zhang, Yanmin <yanmin_zhang@linux.intel.com> wrote:
>
> > > great! Yanmin, could you please also check the other patch i sent
> > > (also attached below), does it solve the regression similarly?
> >
> > With your patch, aim7 regression becomes less than 2%. I ran the
> > testing twice.
> >
> > Linus' patch could recover it completely. As aim7 result is quite
> > stable(usually fluctuating less than 1%), 1.5%~2% is a little big.
>
> is this the old original aim7 you are running,
I useold AIM7 plus a small patch which is just to change a couple of data type to match
64bit.

> or osdl-aim-7 or
> re-aim-7?
>
> if it's aim7 then this is a workload that starts+stops 2000 parallel
> tasks that each start and exit at the same time.
Yes.

> That might explain its
> sensitivity on the BKL - this is all about tty-controlled task startup
> and exit.
>
> i could not get it to produce anywhere close to stable results though. I
> also frequently get into this problem:
>
> AIM Multiuser Benchmark - Suite VII Run Beginning
> Tasks jobs/min jti jobs/min/task real cpu
> 2000
> Failed to execute
> new_raph 200
> Unable to solve equation in 100 tries. P = 1.5708, P0 = 1.5708, delta = 6.12574e-17
>
> Failed to execute
> disk_cp /mnt/shm
> disk_cp (1): cannot open /mnt/shm/tmpa.common
> disk1.c: No such file or directory
>
> [.. etc. a large stream of them .. ]
>
> system has 2GB of RAM and tmpfs mounted to the place where aim7 puts its
> work files.
My machine has 8GB. To simulate your environment, I reserve 6GB for hugetlb, then reran the testing
and didn't see any failure except:
AIM Multiuser Benchmark - Suite VII Run Beginning

Tasks jobs/min jti jobs/min/task real cpu
2000create_shared_memory(): can't create semaphore, pausing...
create_shared_memory(): can't create semaphore, pausing...


Above info doesn't mean errors.

Perhaps you could:
1) Apply the attched aim9 patch;
2) check if you have write right under /mnt/shm;
3) echo "/mnt/shm">aim7_path/config;

diff -urp aim9.orig/creat-clo.c aim9/creat-clo.c
--- aim9.orig/creat-clo.c 2002-04-22 15:25:16.000000000 -0700
+++ aim9/creat-clo.c 2005-07-11 10:20:13.000000000 -0700
@@ -352,7 +352,7 @@ page_test(char *argv,
*/
oldbrk = sbrk(0); /* get current break value */
newbrk = sbrk(1024 * 1024); /* move up 1 megabyte */
- if ((int)newbrk == -1) {
+ if (newbrk == (void *)-1L) {
perror("\npage_test"); /* tell more info */
fprintf(stderr, "page_test: Unable to do initial sbrk.\n");
return (-1);
@@ -365,7 +365,7 @@ page_test(char *argv,
newbrk = sbrk(-4096 * 16); /* deallocate some space */
for (i = 0; i < 16; i++) { /* now get it back in pieces */
newbrk = sbrk(4096); /* Get pointer to new space */
- if ((int)newbrk == -1) {
+ if (newbrk == (void *)-1L) {
perror("\npage_test"); /* tell more info */
fprintf(stderr,
"page_test: Unable to do sbrk.\n");
@@ -406,7 +406,7 @@ brk_test(char *argv,
*/
oldbrk = sbrk(0); /* get old break value */
newbrk = sbrk(1024 * 1024); /* move up 1 megabyte */
- if ((int)newbrk == -1) {
+ if (newbrk == (void *)-1L) {
perror("\nbrk_test"); /* tell more info */
fprintf(stderr, "brk_test: Unable to do initial sbrk.\n");
return (-1);
@@ -419,7 +419,7 @@ brk_test(char *argv,
newbrk = sbrk(-4096 * 16); /* deallocate some space */
for (i = 0; i < 16; i++) { /* allocate it back */
newbrk = sbrk(4096); /* 4k at a time (should be ~ 1 page) */
- if ((int)newbrk == -1) {
+ if (newbrk == (void *)-1L) {
perror("\nbrk_test"); /* tell more info */
fprintf(stderr,
"brk_test: Unable to do sbrk.\n");
diff -urp aim9.orig/pipe_test.c aim9/pipe_test.c
--- aim9.orig/pipe_test.c 2002-04-22 15:25:16.000000000 -0700
+++ aim9/pipe_test.c 2005-07-11 10:21:19.000000000 -0700
@@ -493,8 +493,8 @@ readn(int fd,
buf += result; /* update pointer */
if (--count <= 0) {
fprintf(stderr,
- "\nMaximum iterations exceeded in readn(%d, %#x, %d)",
- fd, (unsigned)buf, size);
+ "\nMaximum iterations exceeded in readn(%d, %p, %d)",
+ fd, buf, size);
return (-1);
}
} /* and loop */
@@ -523,8 +523,8 @@ writen(int fd,
buf += result; /* update pointer */
if (--count <= 0) { /* handle too many loops */
fprintf(stderr,
- "\nMaximum iterations exceeded in writen(%d, %#x, %d)",
- fd, (unsigned)buf, size);
+ "\nMaximum iterations exceeded in writen(%d, %p, %d)",
+ fd, buf, size);
return (-1);
}
} /* and loop */
\
 
 \ /
  Last update: 2008-05-08 10:49    [W:0.077 / U:0.288 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site