envoyproxy/envoy

How to tell if io_uring is being used?

Open

#40.838 aperta il 24 ago 2025

Vedi su GitHub
 (9 commenti) (0 reazioni) (0 assegnatari)C++ (5373 fork)batch import
help wantedquestion

Metriche repository

Star
 (27.997 star)
Metriche merge PR
 (Merge medio 8g) (378 PR mergiate in 30 g)

Descrizione

I'm experimenting with the new io_uring support. Minimal config provided below.

I'm trying to figure out if its actually enabled/working during runtime?

I have tracing enabled ( io: trace, actually I set everything to trace) but I'm not seeing any io logs from https://github.com/envoyproxy/envoy/blob/9b71b5a27debfc63194c0817adfc466c9c719c19/source/common/io/io_uring_worker_impl.cc To clarify, I do see lots of debug and trace logs, but nothing indicating io_uring.

How can I tell if io_uring is actually in use?

@soulxu @zhxie maybe can help?

References: https://www.envoyproxy.io/docs/envoy/latest/configuration/other_features/io_uring.html https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/network/socket_interface/v3/default_socket_interface.proto.html#envoy-v3-api-msg-extensions-network-socket-interface-v3-iouringoptions

version: '3'
services:
  envoy:
    image: envoyproxy/envoy:v1.35.1
    ports:
      - "10000:10000"
      - "9901:9901"
    volumes:
      - ./envoy.yaml:/etc/envoy/envoy.yaml
    command: ["-c", "/etc/envoy/envoy.yaml", "-l", "trace"]
admin:
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 }

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 10000 }
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                route: { cluster: some_service }
          http_filters:
            - name: envoy.filters.http.router
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  clusters:
  - name: some_service
    connect_timeout: 5s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    upstream_http_protocol_options:
      auto_sni: true
      override_auto_sni_header: set-custom-sni
    load_assignment:
      cluster_name: some_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: httpbin.org
                port_value: 443
    transport_socket:
      name: envoy.transport_sockets.tls
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext

bootstrap_extensions:
  - name: iouringtest
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.network.socket_interface.v3.DefaultSocketInterface
      io_uring_options:
        read_buffer_size: 32000
default_socket_interface: iouringtest

Guida contributor