I've just noticed these other issues: 1) epoll is enabled 2) xprof is not used 3) delay pools are not enabled
Attached is a proposal for this (supersedes my previous patch). Regards, On 5/29/06, Gonzalo Arana <[EMAIL PROTECTED]> wrote:
Hi, I believe there is a little problem with this. If store digest is not enabled. I get: store_digest.cc: In function `void storeDigestRegisterWithCacheManager(CacheManager&)': store_digest.cc:135: error: `registerAction' undeclared (first use this function) store_digest.cc:135: error: (Each undeclared identifier is reported only once for each function it appears in.) Attached is my proposal fix for this. Regards, On 5/28/06, Robert Collins <[EMAIL PROTECTED]> wrote: > I hadn't heard anything back, so I've committed what I think is a > tasteful implementation of the second option. This has allowed removing > the stub_cache_manager.cc test suite file, as well as making a bunch of > modules' init simpler. > > Cheers, > Rob > > On Sun, 2006-05-28 at 00:18 +1000, Robert Collins wrote: > > I'd like to make the cachemgrRegister calls in various of our fooInit() > > calls not require dragging in the whole squid to the binary, this is > > part of the blow-out on linked in objects for squid. > > > > Secondly, I'd like to remove the idea of the cachemanager being a global > > object and make it be explicitly passed in when it exists. > > > > We discussed this somewhat on irc. > > > > Some possibilities: > > > > Assuming we have a CacheManager class with 'register' and 'unregister' > > virtual methods, we could: > > > > * add that as a parameter to the Init calls where this is desirable. > > * Have a separate call from Init in modules which asks the module to > > register all its menu items with a supplied CacheManager. > > > > I prefer the second option, as it makes the behaviour of init more > > occupied with 'what is required to use a module' rather than 'do > > everything that /squid/ needs done before running that is related to > > this module.' Henrik is concerned that this will increase the > > maintenance cost of main(), which is possibly true, but I think we can > > address that in future if needed, i.e. by a registry of the modules with > > a few functions like 'init', 'registerWithCacheManger' etc. > > > > Thoughts? > > > > Rob > -- > GPG key available at: <http://www.robertcollins.net/keys.txt>. > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.2.2 (GNU/Linux) > > iD8DBQBEej3JM4BfeEKYx2ERAoPWAJ4lSy5Rff8itOhm5WfyLcs06CA63ACgluZb > OcntB2Y7OpvtYHxqh/MxQPk= > =XJhV > -----END PGP SIGNATURE----- > > > -- Gonzalo A. Arana
-- Gonzalo A. Arana
Index: src/comm_epoll.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/comm_epoll.cc,v retrieving revision 1.11 diff -U6 -p -r1.11 comm_epoll.cc --- src/comm_epoll.cc 29 May 2006 00:50:18 -0000 1.11 +++ src/comm_epoll.cc 29 May 2006 14:05:54 -0000 @@ -191,20 +191,36 @@ commSetSelect(int fd, unsigned int type, } if (timeout) F->timeout = squid_curtime + timeout; } + +static void commIncomingStats(StoreEntry * sentry); + +void +commEPollRegisterWithCacheManager(CacheManager& manager) +{ + manager.registerAction("comm_select_incoming", + "comm_incoming() stats", + commIncomingStats, 0, 1); +} +static void +commIncomingStats(StoreEntry * sentry) +{ + StatCounters *f = &statCounter; + storeAppendPrintf(sentry, "Total number of epoll(2) loops: %d\n", statCounter.select_loops); + storeAppendPrintf(sentry, "Histogram of returned filedescriptors\n"); + statHistDump(&f->select_fds_hist, sentry, statHistIntDumper); +} + /* + * comm_select * Check all connections for new connections and input data that is to be * processed. Also check for connections with data queued and whether we can * write it out. - */ - -/* - * comm_select * * Called to do the new-style IO, courtesy of of squid (like most of this * new IO code). This routine handles the stuff we've hidden in * comm_setselect and fd_table[] and calls callbacks for IO ready * events. */ Index: src/main.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/main.cc,v retrieving revision 1.62 diff -U6 -p -r1.62 main.cc --- src/main.cc 29 May 2006 00:50:18 -0000 1.62 +++ src/main.cc 29 May 2006 14:05:55 -0000 @@ -864,13 +864,15 @@ mainInitialize(void) #ifdef USE_SELECT commSelectRegisterWithCacheManager(manager); #endif clientdbRegisterWithCacheManager(manager); +#if DELAY_POOLS DelayPools::RegisterWithCacheManager(manager); +#endif DiskIOModule::RegisterAllModulesWithCacheManager(manager); #if USE_DNSSERVERS dnsRegisterWithCacheManager(manager); #endif @@ -892,13 +894,15 @@ mainInitialize(void) storeRegisterWithCacheManager(manager); #if DEBUGSTRINGS StringRegistry::Instance().registerWithCacheManager(manager); #endif +#if USE_XPROF_STATS xprofRegisterWithCacheManager(manager); +#endif } #if USE_WCCP wccpInit(); #endif Index: src/store_digest.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/store_digest.cc,v retrieving revision 1.15 diff -U6 -p -r1.15 store_digest.cc --- src/store_digest.cc 29 May 2006 00:50:18 -0000 1.15 +++ src/store_digest.cc 29 May 2006 14:05:55 -0000 @@ -38,15 +38,15 @@ * TODO: We probably do not track all the cases when * storeDigestNoteStoreReady() must be called; this may prevent * storeDigestRebuild/write schedule to be activated */ #include "squid.h" +#include "CacheManager.h" #if USE_CACHE_DIGESTS -#include "CacheManager.h" #include "Store.h" #include "HttpRequest.h" #include "HttpReply.h" #include "MemObject.h" #include "SquidTime.h" #include "StoreSearch.h"