I read the book "understanding the Linux kernel". I cannot understand a sentence,that is ,the local CPU must have local interrupts enabled, otherwise kernel preemption is not performed. What is the meaning of this sentence?
That sentence from the book is incorrect. Preemption can still happen with IRQs being disabled. Sort of.
Preemption is tricky because it can be triggered in a variety of ways, only one of which is through interrupts. For instance, you could always preempt your code directly by calling schedule() which doesn't care about preemption enabling/disabling or about interrupts. cond_resched() is another function which doesn't care about interrupts being disabled.
So the answer to the question
why local CPU must have interrupts enabled, otherwise kernel preemption is not performed?
It doesn't. Preemption can still happen with interrupts disabled. Asynchronous preemption that can happen at any moment can't happen with interrupts disabled. But preemption caused serially by code that you're executing can still happen. Warnings about this exist in the documentation.
However, it doesn't help the confusion that some of these synchronous code paths, like through preempt_enable(), are refuse to preempt if interrupts are disabled. Other paths like cond_resched(), still allow it. The reasoning is likely because of how explicit the function is. cond_resched() is an explicit preemption request, similar to schedule(). Things like preempt_enable() are less explicit, and could trigger preemption accidentally, so it prevents preemption if interrupts are disabled.