That is normal because the pool stats are generated based on actual number of accepted shares. The pool is counting how many valid shares it receives from you in some time window and calculates your average hashrate based on that. It's an estimate - the pool can not monitor your CPU cycles to know exactly how much hashes it actually generates to complete a share.
Because the process is not deterministic, it will always oscillate. Your CPU is really just rolling random numbers, doing some calculation on them, and checking it vs the share target. The pool doesn't know how many attempts it took to guess a solution, but the faster the CPU, the faster you'll be able to find a solution and the pool can only monitor the time between two solutions to estimate the hashrate.
Note that there's always some wasted time when communicating with the pool. You don't want to be finding shares too fast otherwise you'll have too much overhead just for "talking" with the pool. If you're solving shares too quickly, try increase the difficulty and see what happens, you could get more effective H/s. Just avoid setting it too high otherwise you'll get a lot stale shares so you're really looking for some optimum there. Trial & error :) Network latency is also a factor, so you might want to try a pool with the lowest ping.