Ticks are interrupts generated by a hardware timer and occur at a regular interval determined by the CONFIG_HZ kernel configuration, which for most architectures can be configured when compiling the kernel.
The tick interrupt is a per-CPU interrupt. Starting from Linux 2.6.21, the idle dynamic ticks feature can be configured by using the
CONFIG_NO_HZ kernel configuration option. The goal was to eliminate tick interrupts while in idle, to be able to go into deeper sleep modes. This is important for laptops but can also cut down power bills for server rooms. Linux 3.10.0 introduced the full dynamic ticks feature to eliminate tick interrupts when running a single task on a CPU. The goal here was to better support high performance computing and real-time use cases by making sure that the thread would be run undisturbed. The earlier configuration CONFIG_NO_HZ was renamed to CONFIG_NO_HZ_IDLE, and the new feature got the new configuration option CONFIG_NO_HZ_FULL.
The answer to your question is that CONFIG_NO_HZ(_IDLE) increases the cost of moving into and out of the idle state, slightly increasing the time it takes to get an idle CPU back to work. That cost may be considered excessive in highly latency-sensitive environments. For everybody else, disabling the timer tick for idle CPUs is almost certainly the right thing to do; for battery-powered systems that is doubly true.
Check this: http://lwn.net/Articles/549580/