Nyamul Hassan wrote:
>>>>> This thread just raised another question on my mind.  How would 
>>>>> adding another instance (in the same box) with "null cache_dir" 
>>>>> improve my performance?  I'm a bit confused.  Could you please 
>>>>> explain a bit more?
>>>>
>>>> I don't think it would improve performance per-se. It would meet 
>>>> your criteria of "i would like the cache_dir to be common between 
>>>> the 2 squid".
>>>>
>>>
>>> Exactly, as on-disk objects will be served by Squid A alone.  And, 
>>> but objects in Cache_Mem will be served by Squid A or B from their 
>>> own respective memory allocations, and TCP_MISS entirely served from 
>>> the Internet (assuming Squid A is not configured to fetch from 
>>> internet for ICP_MISS).
>>>
>>>> Two squid running on the same box:
>>>>  Squid-A has a large on-disk cache_dir
>>>>  Squid-B has no disk cache, and sources all requests from Squid-A.
>>>>
>>>> The overall effect is that only one copy of each cached object is 
>>>> held on disk at that machine (in Squid-A's cache).
>>>>
>>>> Since Squid-B passes on most requests to Squid-A,  the actual 
>>>> response is less than 2x, more like: up to 1.5x capacity of only 
>>>> squid-A.
>>>>
>>>
>>> I didn't get this increase of "Capacity".  Also, what do you mean by 
>>> "response"?  Response Time?  Can you explain a bit more?
>>
>> "request capacity" On a given CPU squid has a maximum absolute number 
>> of requests per second it can process.
>>
>> Using two squid in parallel load-balanced doubles that maximum 
>> req/sec, assuming the load balancer can handle it too. This setup with 
>> one as parent gets less than 1.5x (half-again) instead of 2x (double).
>>
> 
> Is there a measure on this "Maximum Absolute Number" of requests?
Not really. Benchmarking info has been hard to come by.  I guess any 
given machine and squid version would fit somewhere between 600rps and 
5,000 rps in one Squid.
> 
>>>
>>>> It's up to you if the loss of ~25% response capacity is worth the 
>>>> duplicate object removal.
>>>>
>>>
>>> I'm stumped on this one too.  Can you please also educate me on 
>>> "Response Capacity" and "Duplicate Object Removal"?
>>
>> capacity as above.
>> "duplicate object removal" having only one cache of objects instead of 
>> two.
>>
> 
> On the "duplicate" note, if you've got sibling proxies configured as 
> "proxy-only", that should minimize duplication, as anything that Squid A 
> sees on Squid B is served from Squid B, with Squid A not doing any 
> caching of that content.  The only duplicate that I can think of can 
> happen in case of simultaneous requests of the same object to both Squid 
> A and Squid B, and which is not yet cached in either of them, which 
> shouldn't be much.
> 
>>>
>>>> There is no net gain in response timing, since the Squid-B -> 
>>>> Squid-A request + Squid-A disk read,  is usually slower than a disk 
>>>> read.
>>>>
>>>
>>> This I understand clearly.
>>>
>>>> Off to performance:
>>>>   for best performance, you cache small objects into COSS 
>>>> directories and tune AUFS/DiskD to the OS type you are running on. 
>>>> Ensuring only one disk spindle is used per cache_dir with as fast 
>>>> disks as you can buy. Size doesn't matter, speed does.
>>>>
>>>
>>> Yes, exactly as you and other gurus in the forum have said that in 
>>> numerous posts.  On this note, I have seen that COSS has minimal 
>>> impact on disk usage, almost negligible.  And, I also read somewhere, 
>>> that Linux usage of in-memory disk buffers is quite efficient.  So, 
>>> which is more efficient - Squid's "cache_mem" or OS's in-memory disk 
>>> buffer?
>>
>> Ah, one of the really big questions.
>>
> 
> Looks like we have yet to find out a suitable answer to that!  Is there 
> a way to test this?  Like say, having no "cache_mem", and seeing how far 
> we can push this, and getting comparable readings on IO_Wait and sevice 
> timers?
Indeed. I'm hoping that a lot of things like this will be easier to test 
in isolation once they have been broken out of the current mesh of code 
and into sub-libraries. The SourceLayout project is working towards that 
right now.
Someone should be able to begin some serious performance testing of 
components in 3.2.
> 
>>>
>>>>  Then pump up the machine memory as far as it can go and allocate as 
>>>> said
>>>> many bytes to cache_mem as possible without causing any memory 
>>>> swapping (particularly prevent swapping when under highest load).
>>>>
>>>
>>> How do you find out if the system is "swapping"?  We already have 
>>> configured the Linux box to have NO swap space.
>>
>> Now that I'm not sure of myself. Never having faced that much server 
>> load.
>>
> 
> Well, in our case we've got only 8 GB of RAM, and cache_mem is set to 
> 3GB. Squid process shows it is consuming ~4GB of memory (in top).
> 
>>>
>>> We have the following in each of our Squid boxes:
>>> 4 x 250 GB SATA HDDs each having:
>>> - 20 GB COSS with max-size=1000000 maxfullbufs=32 membufs=256 
>>> block-size=2048 max-size=65536
>>> - 160 GB aufs with min-size=65537
>>>
>>> So, does that mean the Squid process needs 10 GB [(14MB / GB) x (180 
>>> GB per disk) x 4 disks] of memory just to maintain the index?   And, 
>>> on top
>>> of that the size of "cache_mem" that we specify in our config?  And, 
>>> also on top of these, some space for disk buffers?
>>
>> I believe so. Yes.
>>
> 
> Looks like we really need to move to 16 GB of memory!
> 
> Regards
> HASSAN
> 
Amos
-- Please be using Current Stable Squid 2.7.STABLE6 or 3.0.STABLE13 Current Beta Squid 3.1.0.6Received on Mon Mar 09 2009 - 12:04:46 MDT
This archive was generated by hypermail 2.2.0 : Mon Mar 09 2009 - 12:00:01 MDT