Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I've just installed eaccelerator on server that's gonna be running Magento. I have a hard disk, so was wondering would my server performance improve if I was to mount eaccelerator cache dir to RAM. Any downsides? I have 16G of RAM, so I don't think that 256M of allocated eaccelerator dir size should impact it in a negative way.

Thanks

share|improve this question
    
What's the default caching location? –  Jake Elsley Oct 2 '12 at 10:26

1 Answer 1

up vote 3 down vote accepted

Probably not useful, unless it's very bad at it's own memory management.

eAccelerator stores compiled PHP scripts in shared memory and executes code directly from it. It creates locks only for a short time, while searching for a compiled PHP script in the cache, so one script can be executed simultaneously by several engines. Files that can't fit in shared memory are cached on disk only.

https://github.com/eaccelerator/eaccelerator/wiki

Edit - Adding notes for memory settings which outgrew a comment.

By default eaccelerator will allocate up to the OS available "shared memory"

; The amount of shared memory (in megabytes) that eAccelerator will use.
; "0" means OS default. Default value is "0".
eaccelerator.shm_size = "0"

A Linux box will most likely be 32MB (33554432 bytes):

$ sudo sysctl -a | grep kernel.shm
kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0

I doubt your compiled code would even reach that size, maybe if you're running a large number of virtual hosts for lots of people you and have a huge range of PHP?? It appears all support for storing extra "Session data" and "User data" has been removed from eAccelerator so you don't worry about any of that.

If you reconfigure the shared memory to be a bit higher, then yes you are unlikely to fill or even touch 256MB of disk. I'd even be tempted to turn the disk cache off with eaccelerator.shm_only = "1" as your talking about diminishing gains when adding the latency of going out to disk to fetch compiled code. The best way to find out is do some production like load test of your site(s) when it's set up.

share|improve this answer
2  
Yep. Having a cache directory in RAM would just cause eAccelerator to move stuff from one part of RAM to another part of RAM just to have to move it back. Also, if you have 16G of RAM, there's probably no point in having a 256M cache directory. –  David Schwartz Oct 2 '12 at 10:51
    
Thanks. So what size should my cache directory be? –  Netismine Oct 2 '12 at 12:40
    
how much shared memory are you allocating? are you using the cache for code only or additionally storing objects? How many objects? What TTL? it's entirely down to what you are doing. –  mtm Oct 2 '12 at 12:57
    
I have no idea :) but if I understand correctly, eaccelerator will only store on disk if there's no space in RAM? that's what you were referring to in "probably no point having a 256m cache dir"? –  Netismine Oct 2 '12 at 13:39

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.