Eu acredito que eu rastreei isso. É indiscutivelmente uma falha em trickle que ocorreu como resultado de um caracteristico rastejante na chamada da biblioteca socket() .
O código trickle redefine socket() , como você sabe. Na parte superior de sua reimplementação no arquivo trickle-overload.c , há uma verificação que inclui type == SOCK_STREAM , de forma que somente as conexões do tipo SOCK_STREAM sejam elegíveis para processamento.
O código ruby abre o soquete com type = SOCK_STREAM | SOCK_CLOEXEC . O SOCK_CLOEXEC é uma extensão do Linux (desde 2.6.27) que evita o uso de uma chamada fcntl subsequente para definir o sinalizador de fechamento no exec.
Infelizmente SOCK_STREAM não é o mesmo que SOCK_STREAM | SOCK_CLOEXEC , portanto, o processamento trickle não ocorrerá até que seu código seja corrigido para permitir as extensões agora permitidas no campo socket type .
Eu não conheço outra alternativa além de recompilar trickle para o seu sistema com uma comparação de tipo de soquete modificada.
(Eu enviei um relatório de erros para o Debian Bugs, já que é o meu preferido plataforma.)