{"id":1012251,"date":"2024-03-05T19:05:17","date_gmt":"2024-03-06T03:05:17","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-research-item&#038;p=1012251"},"modified":"2024-03-05T19:05:17","modified_gmt":"2024-03-06T03:05:17","slug":"making-kernel-bypass-practical-for-the-cloud-with-junction","status":"publish","type":"msr-research-item","link":"https:\/\/www.microsoft.com\/en-us\/research\/publication\/making-kernel-bypass-practical-for-the-cloud-with-junction\/","title":{"rendered":"Making Kernel Bypass Practical for the Cloud with Junction"},"content":{"rendered":"<p><span dir=\"ltr\" role=\"presentation\">Kernel bypass systems have demonstrated order of <\/span><span dir=\"ltr\" role=\"presentation\">magnitude improvements in throughput and tail latency for <\/span><span dir=\"ltr\" role=\"presentation\">network-intensive applications relative to traditional operating <\/span><span dir=\"ltr\" role=\"presentation\">systems (OSes). To achieve such excellent performance, how<\/span><span dir=\"ltr\" role=\"presentation\">ever, they rely on dedicated resources (<\/span><span dir=\"ltr\" role=\"presentation\">e.g.,<\/span> <span dir=\"ltr\" role=\"presentation\">spinning cores, <\/span><span dir=\"ltr\" role=\"presentation\">pinned memory) and require application rewriting. This is <\/span><span dir=\"ltr\" role=\"presentation\">unattractive to cloud operators because they aim to densely <\/span><span dir=\"ltr\" role=\"presentation\">pack applications, and rewriting cloud software requires a <\/span><span dir=\"ltr\" role=\"presentation\">massive investment of valuable developer time. For both rea<\/span><span dir=\"ltr\" role=\"presentation\">sons, kernel bypass, as it exists, is impractical for the cloud.<\/span><\/p>\n<p><span dir=\"ltr\" role=\"presentation\">In this paper, we show these compromises are not neces<\/span><span dir=\"ltr\" role=\"presentation\">sary to unlock the full benefits of kernel bypass. We present <\/span><span dir=\"ltr\" role=\"presentation\">Junction, the first kernel bypass system that can pack thou<\/span><span dir=\"ltr\" role=\"presentation\">sands of instances on a machine while providing compatibility <\/span><span dir=\"ltr\" role=\"presentation\">with unmodified Linux applications. Junction achieves high <\/span><span dir=\"ltr\" role=\"presentation\">density through several advanced NIC features that reduce <\/span><span dir=\"ltr\" role=\"presentation\">pinned memory and the overhead of monitoring large numbers <\/span><span dir=\"ltr\" role=\"presentation\">of queues. It maintains compatibility with minimal overhead <\/span><span dir=\"ltr\" role=\"presentation\">through optimizations that exploit a shared address space with <\/span><span dir=\"ltr\" role=\"presentation\">the application. Junction scales to 19\u201362<\/span><span dir=\"ltr\" role=\"presentation\">\u00d7<\/span> <span dir=\"ltr\" role=\"presentation\">more instances <\/span><span dir=\"ltr\" role=\"presentation\">than existing kernel bypass systems and can achieve similar or <\/span><span dir=\"ltr\" role=\"presentation\">better performance without code changes. Furthermore, Junc<\/span><span dir=\"ltr\" role=\"presentation\">tion delivers significant performance benefits to applications <\/span><span dir=\"ltr\" role=\"presentation\">previously unsupported by kernel bypass, including those that <\/span><span dir=\"ltr\" role=\"presentation\">depend on runtime systems like Go, Java, Node, and Python. <\/span><span dir=\"ltr\" role=\"presentation\">In a comparison to native Linux, Junction increases through<\/span><span dir=\"ltr\" role=\"presentation\">put by 1.6\u20137.0<\/span><span dir=\"ltr\" role=\"presentation\">\u00d7<\/span> <span dir=\"ltr\" role=\"presentation\">while using 1.2\u20133.8<\/span><span dir=\"ltr\" role=\"presentation\">\u00d7<\/span> <span dir=\"ltr\" role=\"presentation\">less cores across seven <\/span><span dir=\"ltr\" role=\"presentation\">applications.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kernel bypass systems have demonstrated order of magnitude improvements in throughput and tail latency for network-intensive applications relative to traditional operating systems (OSes). To achieve such excellent performance, however, they rely on dedicated resources (e.g., spinning cores, pinned memory) and require application rewriting. This is unattractive to cloud operators because they aim to densely pack [&hellip;]<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr-author-ordering":null,"msr_publishername":"","msr_publisher_other":"","msr_booktitle":"","msr_chapter":"","msr_edition":"","msr_editors":"","msr_how_published":"","msr_isbn":"","msr_issue":"","msr_journal":"","msr_number":"","msr_organization":"USENIX","msr_pages_string":"","msr_page_range_start":"","msr_page_range_end":"","msr_series":"","msr_volume":"","msr_copyright":"","msr_conference_name":"NSDI","msr_doi":"","msr_arxiv_id":"","msr_s2_paper_id":"","msr_mag_id":"","msr_pubmed_id":"","msr_other_authors":"","msr_other_contributors":"","msr_speaker":"","msr_award":"","msr_affiliation":"","msr_institution":"","msr_host":"","msr_version":"","msr_duration":"","msr_original_fields_of_study":"","msr_release_tracker_id":"","msr_s2_match_type":"","msr_citation_count_updated":"","msr_published_date":"2024-4","msr_highlight_text":"","msr_notes":"","msr_longbiography":"","msr_publicationurl":"","msr_external_url":"","msr_secondary_video_url":"","msr_conference_url":"https:\/\/www.usenix.org\/conference\/nsdi24","msr_journal_url":"","msr_s2_pdf_url":"","msr_year":0,"msr_citation_count":0,"msr_influential_citations":0,"msr_reference_count":0,"msr_s2_match_confidence":0,"msr_microsoftintellectualproperty":true,"msr_s2_open_access":false,"msr_s2_author_ids":[],"msr_pub_ids":[],"msr_hide_image_in_river":0,"footnotes":""},"msr-research-highlight":[],"research-area":[13547],"msr-publication-type":[193716],"msr-publisher":[],"msr-focus-area":[],"msr-locale":[268875],"msr-post-option":[],"msr-field-of-study":[246691],"msr-conference":[263941],"msr-journal":[],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-1012251","msr-research-item","type-msr-research-item","status-publish","hentry","msr-research-area-systems-and-networking","msr-locale-en_us","msr-field-of-study-computer-science"],"msr_publishername":"","msr_edition":"","msr_affiliation":"","msr_published_date":"2024-4","msr_host":"","msr_duration":"","msr_version":"","msr_speaker":"","msr_other_contributors":"","msr_booktitle":"","msr_pages_string":"","msr_chapter":"","msr_isbn":"","msr_journal":"","msr_volume":"","msr_number":"","msr_editors":"","msr_series":"","msr_issue":"","msr_organization":"USENIX","msr_how_published":"","msr_notes":"","msr_highlight_text":"","msr_release_tracker_id":"","msr_original_fields_of_study":"","msr_download_urls":"","msr_external_url":"","msr_secondary_video_url":"","msr_longbiography":"","msr_microsoftintellectualproperty":1,"msr_main_download":"","msr_publicationurl":"","msr_doi":"","msr_publication_uploader":[{"type":"url","viewUrl":"false","id":"false","title":"https:\/\/www.usenix.org\/conference\/nsdi24\/presentation\/fried","label_id":"243109","label":0}],"msr_related_uploader":"","msr_citation_count":0,"msr_citation_count_updated":"","msr_s2_paper_id":"","msr_influential_citations":0,"msr_reference_count":0,"msr_arxiv_id":"","msr_s2_author_ids":[],"msr_s2_open_access":false,"msr_s2_pdf_url":null,"msr_attachments":[],"msr-author-ordering":[{"type":"text","value":"Joshua Fried","user_id":0,"rest_url":false},{"type":"user_nicename","value":"Gohar Irfan Chaudhry","user_id":38697,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Gohar Irfan Chaudhry"},{"type":"user_nicename","value":"Enrique Saurez","user_id":41820,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Enrique Saurez"},{"type":"user_nicename","value":"Esha Choukse","user_id":40417,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Esha Choukse"},{"type":"user_nicename","value":"\u00cd\u00f1igo Goiri","user_id":32102,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=\u00cd\u00f1igo Goiri"},{"type":"user_nicename","value":"Sameh Elnikety","user_id":33503,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Sameh Elnikety"},{"type":"user_nicename","value":"Rodrigo Fonseca","user_id":40429,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Rodrigo Fonseca"},{"type":"text","value":"Adam Belay","user_id":0,"rest_url":false}],"msr_impact_theme":[],"msr_research_lab":[],"msr_event":[],"msr_group":[282170],"msr_project":[658236],"publication":[],"video":[],"msr-tool":[],"msr_publication_type":"inproceedings","related_content":{"projects":[{"ID":658236,"post_title":"Serverless Infrastructure","post_name":"serverless-infrastructure","post_type":"msr-project","post_date":"2020-05-12 09:02:55","post_modified":"2025-02-06 11:16:02","post_status":"publish","permalink":"https:\/\/www.microsoft.com\/en-us\/research\/project\/serverless-infrastructure\/","post_excerpt":"Function as a Service (FaaS) is a software paradigm that is becoming increasingly popular.\u00a0 Multiple cloud providers offer FaaS as the interface to usage-driven, stateless (serverless) backend services.\u00a0 FaaS offers an intuitive, event-based interface for developing cloud-based applications.\u00a0 In contrast to the traditional cloud interface, in FaaS, users do not explicitly provision or configure virtual machines (VMs) or containers.\u00a0 FaaS users do not pay for resources they do not use either.\u00a0 Instead, users simply upload&hellip;","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/658236"}]}}]},"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/1012251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-research-item"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/1012251\/revisions"}],"predecessor-version":[{"id":1012257,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/1012251\/revisions\/1012257"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=1012251"}],"wp:term":[{"taxonomy":"msr-research-highlight","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-highlight?post=1012251"},{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=1012251"},{"taxonomy":"msr-publication-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-publication-type?post=1012251"},{"taxonomy":"msr-publisher","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-publisher?post=1012251"},{"taxonomy":"msr-focus-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-focus-area?post=1012251"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=1012251"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=1012251"},{"taxonomy":"msr-field-of-study","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-field-of-study?post=1012251"},{"taxonomy":"msr-conference","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-conference?post=1012251"},{"taxonomy":"msr-journal","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-journal?post=1012251"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=1012251"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=1012251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}