Dealing with both timekeeping and interrupts on x86 systems is awful. Anyone that thinks that the x86 interrupt architecture is "just fine" has rocks in their head.
Yeah, it has it's hairy parts but it still doesn't deserve all the bashing it gets. I found the LAPIC and IOAPIC controllers okay to deal with, I guess there are better ones but multi-core interrupt handling is a complex matter so you can't expect the hardware to be very simple either. Some of the legacy parts are quite hairy, but you can work your way around them quite quickly.