1. A method comprising: receiving an input/output (I/O) request directed at a storage system, the I/O request processed by a storage I/O stack including one or more non-blocking services executing at the storage system, the storage system including one or more processors, each processor including a plurality of processor cores sharing a last-level cache; associating the I/O request with one or more messages; and processing the messages using the non-blocking services, wherein a first non-blocking service executing on a first processor is migrated to a second processor when the processor cores of the second processor are idle, and wherein the first non-blocking service remains migrated such that a service migration hysteresis is maintained.