Thread

  1. Toooo many context switches (maybe SLES8?)

    Dirk Lutzebäck <lutzeb@aeccom.com> — 2004-04-15T12:10:01Z

    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
    
    
    
    
    
    
  2. Re: Toooo many context switches (maybe SLES8?)

    Joe Conway <mail@joeconway.com> — 2004-04-15T16:01:41Z

    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
    
    
  3. Re: Toooo many context switches (maybe SLES8?)

    Dirk Lutzebäck <lutzeb@aeccom.com> — 2004-04-15T16:29:31Z

    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
    >
    >
    
    
    
    
  4. Re: Toooo many context switches (maybe SLES8?)

    Joe Conway <mail@joeconway.com> — 2004-04-15T16:38:33Z

    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
    
    
    
  5. Re: Toooo many context switches (maybe SLES8?)

    Josh Berkus <josh@agliodbs.com> — 2004-04-15T17:40:01Z

    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
    
    
    
  6. Re: Toooo many context switches (maybe SLES8?)

    Tom Lane <tgl@sss.pgh.pa.us> — 2004-04-15T19:37:21Z

    Joe Conway <mail@joeconway.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
    
    
  7. Re: Toooo many context switches (maybe SLES8?)

    Dirk Lutzebaeck <dirk.lutzebaeck@t-online.de> — 2004-04-15T20:03:39Z

    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@joeconway.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
    >
    >  
    >
    
    
    
    
  8. Re: Toooo many context switches (maybe SLES8?)

    Josh Berkus <josh@agliodbs.com> — 2004-04-15T20:37:00Z

    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
    
    
  9. Re: Toooo many context switches (maybe SLES8?)

    Dave Cramer <pg@fastcrypt.com> — 2004-04-18T18:49:53Z

    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
    
    
    
  10. Re: Toooo many context switches (maybe SLES8?)

    Dave Cramer <pg@fastcrypt.com> — 2004-04-20T14:50:52Z

    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@joeconway.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@postgresql.org so that your
    >       message can get through to the mailing list cleanly
    > 
    > 
    > 
    > !DSPAM:408535ce93801252113544!
    > 
    > 
    -- 
    Dave Cramer
    519 939 0336
    ICQ # 14675561