Why to use ordinary kernel if there's realtime one?

Realtime kernels can guarantee a certain response time to a process. For example the process has to read each 10ms the values from an control system. In realtime you can assure that no value is dropped.

If you don't operate some kind of manufactoring control system, you simple don't need it.

The overall system performance may be better if the kernel has not to guarantee every process a time slice in a period. (Better I/O utilization, lower process switch overhead etc etc)

To sum up: Realtime does not increase the throughput of a system.


Expanding on this answer, there's a general trade-off between throughput and latency (or responsiveness). Throughput is how much work you can do per unit time; latency is how long you wait before you can start new work.

Since there's overhead in switching from one task to another (you need to re-load the old task's state, flush caches, etc), throughput is maximised by switching task as infrequently as possible. On the other hand, latency is minimised by switching rapidly between tasks, so no individual task needs to wait a long time before it can run again. As such, the improved latency in the realtime kernel will come at the cost of decreased peak throughput.

Outside the throughput/latency trade-off there are others to consider; the realtime kernel isn't mainline (yet), so doesn't have as much testing, and the realtime kernel will consume more power (because it wakes the processor more aggressively).