Re: Toooo many context switches (maybe SLES8?)

Lists: pgsql-performance
From: Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 12:10:01
Message-ID: 407E7B99.3050306@aeccom.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Hi,

we have a complex modperl database application using postgresql 7.4.1 on
a new Dual Xeon MP Machine with SLES8 which seems to generate too much
context switches (way more than 100.000) on higher load (meaning system
load > 2). System response times significantly slow down then. We have
tuned parameters for weeks now but could not come up with better
results. It seems that we have had better performance on an older Dual
XEON DP Machine running on RedHat 7.3.

Here is the config:

database machine on SuSE SLES 8:

F-S Primergy RX600
2x XEON MP 2.5GHz
8GB RAM
Hardware Raid 1+0 140GB
Kernel 2.4.21-169-smp

Postgresql 7.4.1 (self compiled) with
max_connections = 170
shared_buffers = 40000
effective_cache_size = 800000
sort_mem = 30000
vacuum_mem = 420000
max_fsm_relations = 2000
max_fsm_pages = 200000
random_page_cost = 4
checkpoint_segments = 24
wal_buffers = 32

modperl application machine on RH 7.3:

F-S Primergy RX200
2x XEON DP 2.4 GHz
4 GB RAM
Kernel 2.4.18-10smp, RedHat 7.3
Apache 1.3.27 setup:
MinSpareServers 15
MaxSpareServers 30
StartServers 15
MaxClients 80
MaxRequestsPerChild 100

vmstat 1 excerpt:

procs -----------memory---------- ---swap-- -----io---- --system--
----cpu----
r b swpd free buff cache si so bi bo in cs us sy
id wa
1 0 4868 242372 179488 6942316 0 0 12 8 18 9 6
2 92 0
2 1 4868 242204 179488 6942500 0 0 64 500 701 117921 35
18 48 0
0 1 4868 242032 179392 6941560 0 0 16 316 412 132295 28
25 47 0
1 0 4872 242396 179164 6933776 0 0 128 276 474 69708 21
24 56 0
3 0 4872 242536 179164 6933808 0 0 0 240 412 113643 27
27 46 0
2 0 4872 242872 179092 6931708 0 0 48 1132 521 127916 24
24 53 0
0 0 4876 242876 179092 6927512 0 0 48 532 504 117868 32
21 47 0
0 0 4876 242504 179096 6927560 0 0 0 188 412 127147 34
20 47 0
1 0 4876 242152 179096 6927856 0 0 96 276 529 117684 28
23 49 0
2 0 4876 242864 179096 6928384 0 0 88 560 507 135717 38
19 43 0
1 0 4876 242848 179096 6928520 0 0 64 232 433 151380 32
20 48 0
4 0 4876 242832 179144 6928916 0 0 16 10380 2913 112583 28
20 52 0
4 0 4876 242720 179144 6929240 0 0 196 0 329 154821 32
18 50 0
3 2 4876 243576 179144 6929408 0 0 0 460 451 160287 29
18 52 0
3 0 4876 243292 179180 6929468 0 0 16 436 614 51894 15
5 80 0
0 0 4876 243884 179180 6929580 0 0 0 236 619 154168 29
21 49 0
2 1 4876 243864 179180 6929860 0 0 128 380 493 155903 31
19 50 0
2 0 4876 244720 179180 6930276 0 0 16 1208 561 129336 27
16 56 0
2 0 4876 247204 179180 6930300 0 0 0 0 361 146268 33
20 47 0
3 0 4876 248620 179180 6930372 0 0 0 168 346 155915 32
12 56 0
2 0 4876 250476 179180 6930436 0 0 0 184 328 163842 35
20 46 0
0 0 4876 250496 179180 6930652 0 0 48 260 450 144930 31
15 53 0
1 0 4876 252236 179180 6930732 0 0 16 244 577 167259 35
15 50 0
0 0 4876 252236 179180 6930780 0 0 0 464 622 165488 31
15 54 0
1 0 4876 252268 179180 6930812 0 0 0 132 460 153381 34
15 52 0
2 0 4876 252268 179180 6930964 0 0 0 216 312 141009 31
19 50 0
1 0 4876 252264 179180 6930980 0 0 0 56 275 153143 33
20 47 0
2 0 4876 252212 179180 6931212 0 0 96 296 400 133982 32
18 50 0
1 0 4876 252264 179180 6931332 0 0 0 300 416 136034 32
18 50 0
1 1 4876 252264 179180 6931332 0 0 0 236 377 143300 34
22 44 0
4 0 4876 254876 179180 6931372 0 0 0 124 446 118117 34
20 45 0
1 0 4876 254876 179180 6931492 0 0 16 144 462 140499 38
16 46 0
2 0 4876 255860 179180 6931572 0 0 16 144 674 126250 33
20 47 0
1 0 4876 255860 179180 6931788 0 0 48 264 964 115679 36
13 51 0
3 0 4876 255864 179180 6931804 0 0 0 100 597 127619 36
19 46 0
5 1 4876 255864 179180 6931924 0 0 72 352 559 151620 34
18 48 0
2 0 4876 255860 179184 6932100 0 0 96 120 339 137821 34
20 47 0
0 0 4876 255860 179184 6932156 0 0 8 168 469 125281 36
21 43 0
2 0 4876 256092 179184 6932444 0 0 112 328 446 137939 34
19 48 0
2 0 4876 256092 179184 6932484 0 0 16 184 382 141800 35
16 49 0
3 0 4876 256464 179184 6932716 0 0 16 356 448 134238 30
18 51 0
5 0 4876 256464 179184 6932892 0 0 96 600 476 142838 34
20 46 0
1 0 4876 256464 179184 6933012 0 0 16 176 589 138546 35
22 43 0
2 0 4876 256436 179184 6933096 0 0 60 76 396 93110 42
17 41 0
1 0 4876 256464 179184 6933484 0 0 212 276 442 83060 45
11 44 0
5 0 4876 257612 179184 6933604 0 0 0 472 548 94158 39
17 45 0
0 0 4876 257560 179184 6933708 0 0 96 96 518 116764 38
19 43 0
1 0 4876 257612 179184 6933796 0 0 0 1768 729 139013 29
19 53 0
4 0 4876 257612 179184 6934188 0 0 296 108 332 134703 31
21 48 0
0 1 4876 258584 179184 6934380 0 0 0 492 405 141198 34
18 48 0
1 0 4876 258584 179184 6934492 0 0 0 176 575 134771 37
16 48 0
4 1 4876 257796 179184 6935724 0 0 1176 176 438 151240 33
20 48 0
1 0 4876 261448 179184 6935836 0 0 0 252 489 134348 29
19 51 0
2 0 4876 261448 179184 6935852 0 0 0 512 639 130875 34
16 49 0
2 1 4876 261724 179184 6935924 0 0 0 80 238 144970 33
20 47 0


From: Joe Conway <mail(at)joeconway(dot)com>
To: Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 16:01:41
Message-ID: 407EB1E5.4030600@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Dirk Lutzebäck wrote:
> postgresql 7.4.1

> a new Dual Xeon MP

> too much context switches (way more than 100.000) on higher load (meaning system
> load > 2).

I believe this was fixed in 7.4.2, although I can't seem to find it in
the release notes.

Joe


From: Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>
To: Joe Conway <mail(at)joeconway(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 16:29:31
Message-ID: 407EB86B.6080801@aeccom.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Joe, do you know where I should look in the 7.4.2 code to find this out?

Dirk

Joe Conway wrote:

> Dirk Lutzebäck wrote:
>
>> postgresql 7.4.1
>
>> a new Dual Xeon MP
>
>> too much context switches (way more than 100.000) on higher load
>> (meaning system load > 2).
>
>
> I believe this was fixed in 7.4.2, although I can't seem to find it in
> the release notes.
>
> Joe
>
>


From: Joe Conway <mail(at)joeconway(dot)com>
To: Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 16:38:33
Message-ID: 407EBA89.6080007@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Dirk Lutzebäck wrote:
> Joe, do you know where I should look in the 7.4.2 code to find this out?

I think I was wrong. I just looked in CVS and found the commit I was
thinking about:

http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/storage/lmgr/s_lock.c.diff?r1=1.22&r2=1.23
http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/include/storage/s_lock.h.diff?r1=1.123&r2=1.124

=========================
Revision 1.23 / (download) - [select for diffs] , Sat Dec 27 20:58:58
2003 UTC (3 months, 2 weeks ago) by tgl
Changes since 1.22: +5 -1 lines
Diff to previous 1.22

Improve spinlock code for recent x86 processors: insert a PAUSE
instruction in the s_lock() wait loop, and use test before test-and-set
in TAS() macro to avoid unnecessary bus traffic. Patch from Manfred
Spraul, reworked a bit by Tom.
=========================

I thought this had been committed to the 7.4 stable branch as well, but
it appears not.

Joe


From: Josh Berkus <josh(at)agliodbs(dot)com>
To: Joe Conway <mail(at)joeconway(dot)com>, Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 17:40:01
Message-ID: 200404151040.01160.josh@agliodbs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Joe,

> I believe this was fixed in 7.4.2, although I can't seem to find it in
> the release notes.

Depends on the cause of the issue. If it's the same issue that I'm currently
struggling with, it's not fixed.

--
-Josh Berkus
Aglio Database Solutions
San Francisco


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Joe Conway <mail(at)joeconway(dot)com>
Cc: Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 19:37:21
Message-ID: 20498.1082057841@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Joe Conway <mail(at)joeconway(dot)com> writes:
>> Improve spinlock code for recent x86 processors: insert a PAUSE
>> instruction in the s_lock() wait loop, and use test before test-and-set
>> in TAS() macro to avoid unnecessary bus traffic. Patch from Manfred
>> Spraul, reworked a bit by Tom.

> I thought this had been committed to the 7.4 stable branch as well, but
> it appears not.

I am currently chasing what seems to be the same issue: massive context
swapping on a dual Xeon system. I tried back-patching the above-mentioned
patch ... it helps a little but by no means solves the problem ...

regards, tom lane


From: Dirk(dot)Lutzebaeck(at)t-online(dot)de (Dirk Lutzebaeck)
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Joe Conway <mail(at)joeconway(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 20:03:39
Message-ID: 407EEA9B.7010807@aeccom.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Could this be related to the O(1) scheduler backpatches from 2.6 to 2.4
kernel on newer 2.4er distros (RedHat, SuSE)?

Tom Lane wrote:

>Joe Conway <mail(at)joeconway(dot)com> writes:
>
>
>>>Improve spinlock code for recent x86 processors: insert a PAUSE
>>>instruction in the s_lock() wait loop, and use test before test-and-set
>>>in TAS() macro to avoid unnecessary bus traffic. Patch from Manfred
>>>Spraul, reworked a bit by Tom.
>>>
>>>
>
>
>
>>I thought this had been committed to the 7.4 stable branch as well, but
>>it appears not.
>>
>>
>
>I am currently chasing what seems to be the same issue: massive context
>swapping on a dual Xeon system. I tried back-patching the above-mentioned
>patch ... it helps a little but by no means solves the problem ...
>
> regards, tom lane
>
>
>


From: Josh Berkus <josh(at)agliodbs(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Joe Conway <mail(at)joeconway(dot)com>
Cc: Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-15 20:37:00
Message-ID: 200404151337.00273.josh@agliodbs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Folks,

> I am currently chasing what seems to be the same issue: massive context
> swapping on a dual Xeon system. I tried back-patching the above-mentioned
> patch ... it helps a little but by no means solves the problem ...

BTW, I'm currently pursuing the possibility that this has something to do with
the ServerWorks chipset on those motherboards. If anyone knows a high-end
hardware+linux kernel geek I can corner, I'd appreciate it.

Maybe I should contact OSDL ...

--
Josh Berkus
Aglio Database Solutions
San Francisco


From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Josh Berkus <josh(at)agliodbs(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Joe Conway <mail(at)joeconway(dot)com>, Dirk Lutzebäck <lutzeb(at)aeccom(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-18 18:49:53
Message-ID: 1082314193.1557.44.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Isn't this a linux kernel issue ?

My understanding is that the scheduler doesn't know that 2 of the CPU's
are actually the same underlying hardware and sometimes two contexts end
up fighting for the same underlying chip?

--dc--

On Thu, 2004-04-15 at 16:37, Josh Berkus wrote:
> Folks,
>
> > I am currently chasing what seems to be the same issue: massive context
> > swapping on a dual Xeon system. I tried back-patching the above-mentioned
> > patch ... it helps a little but by no means solves the problem ...
>
> BTW, I'm currently pursuing the possibility that this has something to do with
> the ServerWorks chipset on those motherboards. If anyone knows a high-end
> hardware+linux kernel geek I can corner, I'd appreciate it.
>
> Maybe I should contact OSDL ...
--
Dave Cramer
519 939 0336
ICQ # 14675561


From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: lutzeb(at)aeccom(dot)com
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Joe Conway <mail(at)joeconway(dot)com>, pgsql-performance(at)postgresql(dot)org
Subject: Re: Toooo many context switches (maybe SLES8?)
Date: 2004-04-20 14:50:52
Message-ID: 1082472652.1554.155.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Don't think so, mine is a vanilla kernel from kernel.org

Dave
On Thu, 2004-04-15 at 16:03, Dirk Lutzebaeck wrote:
> Could this be related to the O(1) scheduler backpatches from 2.6 to 2.4
> kernel on newer 2.4er distros (RedHat, SuSE)?
>
>
> Tom Lane wrote:
>
> >Joe Conway <mail(at)joeconway(dot)com> writes:
> >
> >
> >>>Improve spinlock code for recent x86 processors: insert a PAUSE
> >>>instruction in the s_lock() wait loop, and use test before test-and-set
> >>>in TAS() macro to avoid unnecessary bus traffic. Patch from Manfred
> >>>Spraul, reworked a bit by Tom.
> >>>
> >>>
> >
> >
> >
> >>I thought this had been committed to the 7.4 stable branch as well, but
> >>it appears not.
> >>
> >>
> >
> >I am currently chasing what seems to be the same issue: massive context
> >swapping on a dual Xeon system. I tried back-patching the above-mentioned
> >patch ... it helps a little but by no means solves the problem ...
> >
> > regards, tom lane
> >
> >
> >
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>
>
>
> !DSPAM:408535ce93801252113544!
>
>
--
Dave Cramer
519 939 0336
ICQ # 14675561