Project

General

Profile

Actions

Feature #21837

open

Introduce socket hooks in Fiber Scheduler interface

Feature #21837: Introduce socket hooks in Fiber Scheduler interface

Added by noteflakes (Sharon Rosner) about 1 month ago. Updated about 1 month ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:124519]

Description

Currently the fiber scheduler interface does not support any socket operations. The stock Ruby socket implementation performs all operations in a non-blocking way, and invokes the #io_wait fiber scheduler hook in order to wait for readiness. Adding fiber scheduler hooks for socket I/O will allow using io_uring to perform socket I/O directly without waiting for socket readiness.

I propose adding the following hooks:

  • #socket_recv(sock, buffer, length, flags, recvfrom): performs a recv or recvfrom. The recvfrom argument is a boolean denoting whether a recvfrom should be performed. When true, the hook should return an array containing the number of bytes received and the source address. When false, the hook should return the number of bytes received.
  • #socket_send(sock, dest, buffer, length, flags): performs a send or sendto. The dest argument is nil for a send. When not nil, a sendto operation should be done.
  • #socket_connect(sock, addr): performs a connect.
  • #socket_accept(sock, client_sockaddr) - performs an accept. The client_sockaddr argument is an IO::Buffer that receives the peer addrinfo.

The PR for this feature: https://github.com/ruby/ruby/pull/15865

Updated by Eregon (Benoit Daloze) about 1 month ago Actions #1 [ruby-core:124558]

What's the advantage to do it this way vs just the non-blocking + #io_wait way? (the description doesn't explain that)

Updated by noteflakes (Sharon Rosner) about 1 month ago Actions #2 [ruby-core:124562]

What's the advantage to do it this way vs just the non-blocking + #io_wait way? (the description doesn't explain that)

This is specifically to allow using the io_uring interface to perform socket I/O in a fiber scheduler implementation. I'm adding this information to the above feature proposal.

Updated by noteflakes (Sharon Rosner) about 1 month ago Actions #3

  • Description updated (diff)
Actions

Also available in: PDF Atom