An update on the status.
I've tried restoring everything to the default simpleBLEPeripheral.c and only modified SBP_PERIODIC_EVT_PERIOD to 200, 500, 1000. Everything works as expected. What I mean is that I'm getting a notification every 200, 500 and 1000 ms respectively.
So, I decided to try increasing the frequency. I've simply increased the frequency of the periodic event to 20Hz (by setting SBP_PERIODIC_EVT_PERIOD to 50).This means that 2 notifications will be sent in every connection interval, and this is fine.
However, according to the timestamps in btool (and my own btool like java program), I'm only getting 13/14 notifications per second instead of the expected 20. Surely, I can't have exceeded the amount of CPU time? I mean, what is happening in the periodic event is simply read 1 byte from SIMPLEPROFILE_CHAR3 and then writing that same byte to SIMPLEPROFILE_CHAR4, causing a notification to be sent.
I've disabled power savings, so I don't think this is a factor. Also, I've tried the same experiment with connection interval as 50 ms and am getting the same results.
I would really appreciate some help on this!