{"action":"created","issue":{"url":"https://api.github.com/repos/snabbco/snabb/issues/1186","repository_url":"https://api.github.com/repos/snabbco/snabb","labels_url":"https://api.github.com/repos/snabbco/snabb/issues/1186/labels{/name}","comments_url":"https://api.github.com/repos/snabbco/snabb/issues/1186/comments","events_url":"https://api.github.com/repos/snabbco/snabb/issues/1186/events","html_url":"https://github.com/snabbco/snabb/pull/1186","id":246041830,"number":1186,"title":"[sketch] Specialized inter-process links","user":{"login":"eugeneia","id":4933566,"avatar_url":"https://avatars3.githubusercontent.com/u/4933566?v=4","gravatar_id":"","url":"https://api.github.com/users/eugeneia","html_url":"https://github.com/eugeneia","followers_url":"https://api.github.com/users/eugeneia/followers","following_url":"https://api.github.com/users/eugeneia/following{/other_user}","gists_url":"https://api.github.com/users/eugeneia/gists{/gist_id}","starred_url":"https://api.github.com/users/eugeneia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eugeneia/subscriptions","organizations_url":"https://api.github.com/users/eugeneia/orgs","repos_url":"https://api.github.com/users/eugeneia/repos","events_url":"https://api.github.com/users/eugeneia/events{/privacy}","received_events_url":"https://api.github.com/users/eugeneia/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-07-27T13:35:57Z","updated_at":"2018-03-02T09:13:30Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/snabbco/snabb/pulls/1186","html_url":"https://github.com/snabbco/snabb/pull/1186","diff_url":"https://github.com/snabbco/snabb/pull/1186.diff","patch_url":"https://github.com/snabbco/snabb/pull/1186.patch"},"body":"This is a proof of concept implementation of specialized inter-process links with dedicated transmitter/receiver apps. This design is mostly similar to @javierguerragiraldez’ from #601. The underlying queue is based on the MCRingBuffer design described in the paper linked in #772. To avoid processes starving of packets, for each packet transmitted via an inter-process link one packet is given back in exchange, and subsequently freed by the transmitting process.\r\n\r\nWe expect to be able to apply the ring buffer design from this PoC to the design described in #1185, and this way hope to match the performance of this PR.\r\n\r\nThis PR can be tested like so (only lightly tested so far):\r\n\r\n```\r\n$ sudo ./snabb snsh apps/interlink/test.lua\r\nlink report:\r\n         354,941,034 sent on rx.output -> sink.input (loss rate: 0%)\r\nworker source: pid=15459 alive=true status=0\r\n35.4941034 Mpps\r\n```\r\n\r\nThe most interesting bit here is the special link implementation in `lib/interlink.lua`. The major difference when compared to `struct link` is that it features producer/consumer local state variables to eliminate false sharing. To that end this implementation requires explicit calls to publish the updated state after reading/writing elements to the producer/consumer."},"comment":{"url":"https://api.github.com/repos/snabbco/snabb/issues/comments/369864746","html_url":"https://github.com/snabbco/snabb/pull/1186#issuecomment-369864746","issue_url":"https://api.github.com/repos/snabbco/snabb/issues/1186","id":369864746,"user":{"login":"wingo","id":1745903,"avatar_url":"https://avatars1.githubusercontent.com/u/1745903?v=4","gravatar_id":"","url":"https://api.github.com/users/wingo","html_url":"https://github.com/wingo","followers_url":"https://api.github.com/users/wingo/followers","following_url":"https://api.github.com/users/wingo/following{/other_user}","gists_url":"https://api.github.com/users/wingo/gists{/gist_id}","starred_url":"https://api.github.com/users/wingo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wingo/subscriptions","organizations_url":"https://api.github.com/users/wingo/orgs","repos_url":"https://api.github.com/users/wingo/repos","events_url":"https://api.github.com/users/wingo/events{/privacy}","received_events_url":"https://api.github.com/users/wingo/received_events","type":"User","site_admin":false},"created_at":"2018-03-02T09:13:30Z","updated_at":"2018-03-02T09:13:30Z","author_association":"CONTRIBUTOR","body":"Does #1288 completely supersede this PR?"}}
{"actor":{"display_login":"wingo"}}