)]}'
{
  "commit": "aeeb455bd857fee83b1316e70c8e8c277346704a",
  "tree": "aa7cf017f3b53c892c53286fd1475761b6eedd03",
  "parents": [
    "ba5a7f4f9f05b69fdeec036bbfc2826d63b07b74"
  ],
  "author": {
    "name": "Andrei Vagin",
    "email": "avagin@google.com",
    "time": "Tue Oct 22 11:54:14 2019 -0700"
  },
  "committer": {
    "name": "gVisor bot",
    "email": "gvisor-bot@google.com",
    "time": "Tue Oct 22 11:54:41 2019 -0700"
  },
  "message": "netstack/tcp: software segmentation offload\n\nRight now, we send each tcp packet separately, we call one system\ncall per-packet. This patch allows to generate multiple tcp packets\nand send them by sendmmsg.\n\nThe arguable part of this CL is a way how to handle multiple headers.\nThis CL adds the next field to the Prepandable buffer.\n\nNginx test results:\n\nServer Software:        nginx/1.15.9\nServer Hostname:        10.138.0.2\nServer Port:            8080\n\nDocument Path:          /10m.txt\nDocument Length:        10485760 bytes\n\nw/o gso:\nConcurrency Level:      5\nTime taken for tests:   5.491 seconds\nComplete requests:      100\nFailed requests:        0\nTotal transferred:      1048600200 bytes\nHTML transferred:       1048576000 bytes\nRequests per second:    18.21 [#/sec] (mean)\nTime per request:       274.525 [ms] (mean)\nTime per request:       54.905 [ms] (mean, across all concurrent requests)\nTransfer rate:          186508.03 [Kbytes/sec] received\n\nsw-gso:\n\nConcurrency Level:      5\nTime taken for tests:   3.852 seconds\nComplete requests:      100\nFailed requests:        0\nTotal transferred:      1048600200 bytes\nHTML transferred:       1048576000 bytes\nRequests per second:    25.96 [#/sec] (mean)\nTime per request:       192.576 [ms] (mean)\nTime per request:       38.515 [ms] (mean, across all concurrent requests)\nTransfer rate:          265874.92 [Kbytes/sec] received\n\nw/o gso:\n$ ./tcp_benchmark --client --duration 15  --ideal\n[SUM]  0.0-15.1 sec  2.20 GBytes  1.25 Gbits/sec\n\nsoftware gso:\n$ tcp_benchmark --client --duration 15  --ideal --gso $((1\u003c\u003c16)) --swgso\n[SUM]  0.0-15.1 sec  3.99 GBytes  2.26 Gbits/sec\n\nPiperOrigin-RevId: 276112677\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4287464f3e813d69fb977d58ff1eb706cee5237c",
      "old_mode": 33188,
      "old_path": "tcpip/buffer/prependable.go",
      "new_id": "48a2a2713a8051f10726db9c22950cbc8aec4b5a",
      "new_mode": 33188,
      "new_path": "tcpip/buffer/prependable.go"
    },
    {
      "type": "modify",
      "old_id": "969876341eb87eae07aba8304ad59c0f570efd32",
      "old_mode": 33188,
      "old_path": "tcpip/header/checksum.go",
      "new_id": "b67ceca5bd3f7434157881159d9eeba1a432a066",
      "new_mode": 33188,
      "new_path": "tcpip/header/checksum.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "43f0447797430988dbc9d0af30f700685b7bdf45",
      "new_mode": 33188,
      "new_path": "tcpip/header/checksum_test.go"
    },
    {
      "type": "modify",
      "old_id": "3c62b5a9e1610a9207c57c05889a6c7f8002c5b3",
      "old_mode": 33188,
      "old_path": "tcpip/link/channel/channel.go",
      "new_id": "fdaa8be022a38471efaa4bd4280c380fef6444a4",
      "new_mode": 33188,
      "new_path": "tcpip/link/channel/channel.go"
    },
    {
      "type": "modify",
      "old_id": "de60d0df1c57e39793ce5199582555c084b7bf2e",
      "old_mode": 33188,
      "old_path": "tcpip/link/fdbased/endpoint.go",
      "new_id": "776db510009da02c419093f90fe8e1b7e0f6aba2",
      "new_mode": 33188,
      "new_path": "tcpip/link/fdbased/endpoint.go"
    },
    {
      "type": "modify",
      "old_id": "6ab307103fb83806e000f91aa1eee4c457ef3fe2",
      "old_mode": 33188,
      "old_path": "tcpip/link/fdbased/packet_dispatchers.go",
      "new_id": "adf9096d2f7ff0cae23a4fd88efefa87006aa2b3",
      "new_mode": 33188,
      "new_path": "tcpip/link/fdbased/packet_dispatchers.go"
    },
    {
      "type": "modify",
      "old_id": "0e005c15ce5384d234b699937b5d0d8fb6f2792e",
      "old_mode": 33188,
      "old_path": "tcpip/link/loopback/loopback.go",
      "new_id": "dc9a9e655afb77756c10b946af9572eab04a8bd6",
      "new_mode": 33188,
      "new_path": "tcpip/link/loopback/loopback.go"
    },
    {
      "type": "modify",
      "old_id": "71bcee99ff47f4d406f9ee7cd852b407866e4988",
      "old_mode": 33188,
      "old_path": "tcpip/link/muxed/injectable.go",
      "new_id": "397431cc8700bbbf49933b4160d9af4d8aaa6385",
      "new_mode": 33188,
      "new_path": "tcpip/link/muxed/injectable.go"
    },
    {
      "type": "modify",
      "old_id": "c4e122b9aa1d896bb666e11a2ee86cb70f33eadb",
      "old_mode": 33188,
      "old_path": "tcpip/link/rawfile/rawfile_unsafe.go",
      "new_id": "762c5c96514f1df88c18a2fdf1fe0515a96a297c",
      "new_mode": 33188,
      "new_path": "tcpip/link/rawfile/rawfile_unsafe.go"
    },
    {
      "type": "modify",
      "old_id": "b6fdd6d8b55b216437febb395c75bcc8e8289e33",
      "old_mode": 33188,
      "old_path": "tcpip/link/sharedmem/sharedmem.go",
      "new_id": "227dcbc66f552e384fed5043477056f420b3dbfd",
      "new_mode": 33188,
      "new_path": "tcpip/link/sharedmem/sharedmem.go"
    },
    {
      "type": "modify",
      "old_id": "4901dcab85efa1b161fa53488010b3885ae350a9",
      "old_mode": 33188,
      "old_path": "tcpip/link/sniffer/sniffer.go",
      "new_id": "6a7d56488b32ca69bbfe16b23c65bd6728e2fed9",
      "new_mode": 33188,
      "new_path": "tcpip/link/sniffer/sniffer.go"
    },
    {
      "type": "modify",
      "old_id": "f9cd94629b81362608502196f7c107055884adc3",
      "old_mode": 33188,
      "old_path": "tcpip/link/waitable/waitable.go",
      "new_id": "ada74d028d126d6012333329c5b70244430a33c2",
      "new_mode": 33188,
      "new_path": "tcpip/link/waitable/waitable.go"
    },
    {
      "type": "modify",
      "old_id": "0bba93c9a57296cffd21645f14b5974bcdda7b9b",
      "old_mode": 33188,
      "old_path": "tcpip/link/waitable/waitable_test.go",
      "new_id": "7935cb4fe72feec93d1f4a9ea711c45f3d843917",
      "new_mode": 33188,
      "new_path": "tcpip/link/waitable/waitable_test.go"
    },
    {
      "type": "modify",
      "old_id": "d245583b62702f170c092a405f68eae982e4e13e",
      "old_mode": 33188,
      "old_path": "tcpip/network/arp/arp.go",
      "new_id": "4d239438a3689b8897ae6080b0ca5e79bca5561d",
      "new_mode": 33188,
      "new_path": "tcpip/network/arp/arp.go"
    },
    {
      "type": "modify",
      "old_id": "4962327b197742abf2060713108c81032c386e8e",
      "old_mode": 33188,
      "old_path": "tcpip/network/ip_test.go",
      "new_id": "bd5be0864db19b74d6ccf13caacfe064663be9ea",
      "new_mode": 33188,
      "new_path": "tcpip/network/ip_test.go"
    },
    {
      "type": "modify",
      "old_id": "30176c4968243a80490c8a5d5e32f64b361fae6f",
      "old_mode": 33188,
      "old_path": "tcpip/network/ipv4/ipv4.go",
      "new_id": "b781cb6fef2a517a89ff709942f4fd37c6e5769e",
      "new_mode": 33188,
      "new_path": "tcpip/network/ipv4/ipv4.go"
    },
    {
      "type": "modify",
      "old_id": "10729c8969b29ad64cf3de5a34286b50e4c7a740",
      "old_mode": 33188,
      "old_path": "tcpip/network/ipv6/ipv6.go",
      "new_id": "b0eb6b0e726d2dd52ebae7590965a57112babc64",
      "new_mode": 33188,
      "new_path": "tcpip/network/ipv6/ipv6.go"
    },
    {
      "type": "modify",
      "old_id": "9870b7b6e2f0f6c0d9a6d87ad1ae7790fd49b3c2",
      "old_mode": 33188,
      "old_path": "tcpip/stack/registration.go",
      "new_id": "5d9adc6182ecd4b64e3ce0b2e9bdba4b96ff50d0",
      "new_mode": 33188,
      "new_path": "tcpip/stack/registration.go"
    },
    {
      "type": "modify",
      "old_id": "7a3dd68993784f9941735fe0557504aeda9a837b",
      "old_mode": 33188,
      "old_path": "tcpip/stack/route.go",
      "new_id": "d51bde9f75b1169c5cf7985a281194b9cbd82ddd",
      "new_mode": 33188,
      "new_path": "tcpip/stack/route.go"
    },
    {
      "type": "modify",
      "old_id": "78d56e21482b45f451ac8dcdf4792c457f0af205",
      "old_mode": 33188,
      "old_path": "tcpip/stack/stack_test.go",
      "new_id": "dd710a43b65f1a5d8ed2c1f492816991f5bf85de",
      "new_mode": 33188,
      "new_path": "tcpip/stack/stack_test.go"
    },
    {
      "type": "modify",
      "old_id": "c3258b212423abcc21ac7ad8996ca482dfa4f319",
      "old_mode": 33188,
      "old_path": "tcpip/transport/tcp/connect.go",
      "new_id": "d4625dd479f5b300801bd3ea88dd10ea0d2fee0f",
      "new_mode": 33188,
      "new_path": "tcpip/transport/tcp/connect.go"
    },
    {
      "type": "modify",
      "old_id": "ba897be9cd8a5083944ae7e54852dc0d0b9b17de",
      "old_mode": 33188,
      "old_path": "tcpip/transport/tcp/endpoint.go",
      "new_id": "3a4ece4ef31651ae9e397e6cb23811dd7a6f51b2",
      "new_mode": 33188,
      "new_path": "tcpip/transport/tcp/endpoint.go"
    }
  ]
}
