Article View: comp.os.linux.hardware
Article #505Re: Dual Celeron's and SMP Performance Problems
From: Rod Roark
Date: Tue, 25 May 1999 00:00
Date: Tue, 25 May 1999 00:00
134 lines
8067 bytes
8067 bytes
I must be dense. After reading this a couple of times I still don't understand: how can two Celerons be worse than one when each has its own cache? I don't see how an interrupt serviced by one would cause the other's cache to be flushed. -- Rod Totally Lost <idletime@my-dejanews.com> wrote: >The work done by Tomohiro Kawada and others has been interesting. >I can think of a number of applications where dual/quad overclocked >Celeron's can produce very cost effective clusters for number crunching. >The crypt cracking teams will get a great windfall from this work. >I do performance studies and optimization for a living. One of the >biggest problems people have porting applications from big iron >SMP servers to X86 SMP servers is memory foot print and working >set locality problems which make X86 SMP scaling difficult at best. >Big Iron SMP servers typically have larger L1/L2 caches with >a much faster memory subsystem under them. The size of the >working set directly predicts the performance of most >applications. To help clients understand this I often use the following >visual aid in my presentations, which is the output of a tool >I use to measure the performance of their system as the working >set size is increased: >Counts are thousands of MemOps/second. >SunOS svr20 5.5.1 Generic sun4m sparc SUNW,SPARCstation-20 >Set Sequential Random >Size Cnt Pct Cnt Pct >----- --------- --------- 0% 25% 50% 75% 100 > 2K 29685 100 21271 100 | | | *| @ > 3K 29657 100 21244 100 | * @ > 4K 29652 100 21231 100 | | | * | @ > 6K 29644 100 21264 100 | * @ > 8K 29652 100 21203 100 | | | * | @ > 12K 29644 100 21245 100 | * @ > 16K 29625 100 21221 100 | | | * | @ > 24K 10996 37 18120 85 | @ * > 32K 7943 27 16190 76 | |@ | * | | > 48K 7941 27 13716 64 | @ * > 64K 7939 27 12067 57 | |@ * | | | > 96K 7943 27 10802 51 | @ * > 128K 7947 27 9877 46 | |@ * | | | > 192K 7946 27 9837 46 | @ * > 256K 7909 27 9828 46 | |@ * | | | > 384K 7773 26 9806 46 | @ * > 512K 7652 26 9766 46 | @ * | | | > 768K 7619 26 9765 46 | @ * >1024K 7580 26 9755 46 | @ * | | | >1536K 2164 7 9642 45 | @ * > 2M 2045 7 9634 45 | @ | * | | | > 3M 2044 7 9602 45 | @ * > 4M 2041 7 9595 45 | @ | * | | | > 6M 2038 7 9592 45 | @ * > 8M 2042 7 8823 41 | @ | * | | | > 12M 2035 7 8720 41 | @ * > 16M 1863 6 8723 41 | @ | * | | | > 24M 2023 7 8596 40 | @ * > 32M 1657 6 9590 45 | @ | * | | | > 48M 10 0 8040 38 @ * > 64M 40 0 6552 31 @ *| | | | >The graph is plotted with all values relative to the first sequential >value. The test reflects the performance losses due to the working >set size impact on the VM/Cache/Memory subsystems. This includes >TLB misses, cache misses and memory latency. Cache design and memory >allocation coloring present very different responses to this test. >Poorly colored memory with direct mapped caches shows up with early >degradation slopes, while good coloring produces sharp fall-offs at >each cache boundry. >This particular machine didn't have a lot of >memory and started paging above 32M, with 32K L1 and 1024K L2 cache >sizes. Increasing the working set by a single cache line >often reduces the performance to the next larger (and slower) >memory object. >In a real system, there are many sources that scale into the working >set size(s). The size of the active interrupt service routines and >OS scheduler are often near the size of L1/L2 caches on many X86 >systems, thus each interrupt flushes the cache and effectively runs >at memory or L2 cache speeds. In an SMP system, both CPU's have to >share the memory performance. If the L1/L2 caches are too small, then >two processors are worse than one, because they will flush each other >with distributed interrupts. The cost of flushing the cache by context >switches and interrupts is two 2X ... memory cycles required to bring >in the new context/interrupt plus the memory cycles required to replace >the active process memory on exit. One reason that X86 SMP servers >may scale, is that network interrupt loads that flush a uniprocessor, >only impact one processor in a multiprocessor system ... especially >if the interrupts are bound to a single processor. Ditto for the disk >subsystems. SCSI controllers that have high interrupt loading can >kill an SMP server if the interrupts are distributed. NCR825's are >a very good example when used with very poor SCSI scripts and drivers. >Understanding the locality and working set sizes, some X86 vendors >have post processed their kernel builds to improve locality and >placement. The work done by the SCO Unixware team on the object code >segments has produced remarkable results. These vendors often have >large kernels and feature sets, with same/better overall performance. >Celron's with their 128K L2 cache can easily produce worse performance >under modest to heavy load than a single processor in an SMP system. >In many server systems, even dual PII's with 512K L2 caches fail to >scale or produce negative results under modest to heavy work loads. >In some applications, even Xenon's large caches fail to scale or >produce negative results in comparision to uniprocessors of the same >architecture. Simply put, it's not uncommon to find applications where >two processors trashing the caches with SMP interrupts or shared memory >produce much worse performance than the same system with only a single >processor enabled. >Linux is not well multi-threaded, and has a pretty large foot print >with very little locality in either the OS or it's primary applications. >I would expect that for many users, dual Celeron's may have a negative >performance impact much of the time. >To observe that Dual Celron's produce an observed improvement under >certain lightly loading applications may be true. To assert that >they scale under modest to heavy work loads is probably a huge mistake. >To expect that they will scale well under Linux with heavy loads is >almost certainly folly. >John Bass >UNIX Systems Consultant -- Rod ---------------------------------------------------------------------- Sunset Systems Preconfigured Linux Computers http://www.sunsetsystems.com/ and Custom Software ----------------------------------------------------------------------
Technical Details
Message-ID:
<7iette$6ge$1@nnrp03.primenet.com>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<7ieko6$41e$1@nnrp1.deja.com>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1159f7,acbefbd0f12f9cdd X-Google-Attributes: gid1159f7,public X-Google-Thread: 102b32,acbefbd0f12f9cdd X-Google-Attributes: gid102b32,public X-Google-Thread: 100562,acbefbd0f12f9cdd X-Google-Attributes: gid100562,public From: Rod Roark <rod@sunsetsystems.com> Subject: Re: Dual Celeron's and SMP Performance Problems Date: 1999/05/25 Message-ID: <7iette$6ge$1@nnrp03.primenet.com> X-Deja-AN: 482013912 References: <7ieko6$41e$1@nnrp1.deja.com> Organization: Sunset Systems X-Posted-By: rroark@206.165.6.202 (rroark) Newsgroups: comp.os.linux.hardware,alt.comp.hardware.overclocking,csu.unix.linux X-Complaints-To: abuse@globalcenter.net