How to optimize APC when running many sites with common codebase?
I think the key here is to limit the total number and size of your PHP scripts. You've already taken the first step by running them off a shared codebase. The next step is to make sure you're not duplicating modules or themes that are shared. For example, you should have sites/all/modules/views, not sites/site1.com/modules/views and sites/site2.com/modules/views.

Once you've done that, I can't imagine that the total size of your php files would be more than, say, 200MB.

The next step is to configure APC and figure out exactly how large all of your php scripts are. For a production server, I like to permanently cache my php scripts. Place the following in your apc.ini file:

apc.enabled=1
apc.shm_segments=1
apc.shm_size=512
apc.cache_by_default=1
apc.stat=0
apc.ttl=0


Note the apc.shm_size=512 setting. We've purposely set it to something much larger than we think we will need. Once this is set (and you've restarted Apache), you should hit every single php script on your site so APC caches each of them. This includes the module admin page, views, theme pages etcetera for each of your sites. Once you're done with that, load up the apc.php script and see how much memory APC is actually using and adjust the apc.shm_size downward accordingly.

I have detailed instuctions on configuring APC for Drupal on Github.