It all depends on the content the client requests. TMG will by default not cache all content as it is of no use and in some cases not desirable.
Authenticated content is by default not cached
Content with cache directives preventing caching will not be cached
Dynamic content
Content served on an SSL Connection will not be served
etc
You can change the above as described in the article linked in previous post. If you are only reaching 3-4% you should investigate what kind of content is actually served to the clients. I'd be happy with 10-15% on a Rolling 24h basis (likely less on weekends
of course) which is what I see on one of my bigger installations with roughly 3500-4500 concurrent sessions depending on time of day with a cache drive of 1 GB per host.