If the Data processing is CPU intensive using EM.defer may not help, because of VM lock and in fact data processing thread may starve out the thread which processes Events. Also, EM.defer is backed by a thread pool and was designed to be used for stuff that requires blocking IO (a protocol which can't be multiplexed easily).
It all depends on - volume of Data and what kind of processing you are doing with it.
If possible, I would recommend looking into one process for handling incoming data and another process for processing it. What I would do is -
1. Master process that handles socket stuff (using EM) and it writes the read data to a message queue (I am thinking simple POSIX Message Queues should suffice (
https://github.com/tmm1/ruby_posix_mq).
2. Another process reads the data from POSIX message queue and does the required processing.