{"schedule": {"version": "v1", "base_url": "https://cfp.all-systems-go.io/ASG2017/schedule/", "conference": {"acronym": "ASG2017", "title": "All Systems Go! 2017", "start": "2017-10-20", "end": "2017-10-22", "daysCount": 3, "timeslot_duration": "00:05", "rooms": [{"name": "Event Loft", "guid": null, "description": null, "capacity": null}, {"name": "Galerie", "guid": null, "description": null, "capacity": null}, {"name": "Kinvolk Office", "guid": null, "description": null, "capacity": null}], "days": [{"index": 1, "date": "2017-10-20", "day_start": "2017-10-20T04:00:00+00:00", "day_end": "2017-10-21T03:59:00+00:00", "rooms": {"Kinvolk Office": [{"id": 1, "guid": "4808bb85-a73d-5af3-9f19-19b5a4907e16", "logo": "", "date": "2017-10-20T16:30:00+00:00", "start": "16:30", "duration": "03:00", "room": "Kinvolk Office", "slug": "ASG2017-1-pre-registration-event", "url": "https://cfp.all-systems-go.io/ASG2017/talk/142/", "title": "Pre-Registration Event", "subtitle": "", "track": "default", "type": "default", "language": "en", "abstract": null, "description": "Meet-up at the Kinvolk Office!\n", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "attachments": [], "answers": []}]}}, {"index": 2, "date": "2017-10-21", "day_start": "2017-10-21T04:00:00+00:00", "day_end": "2017-10-22T03:59:00+00:00", "rooms": {"Event Loft": [{"id": 2, "guid": "1b5b20e6-a696-5745-b137-8f631a6922cd", "logo": "", "date": "2017-10-21T07:30:00+00:00", "start": "07:30", "duration": "00:15", "room": "Event Loft", "slug": "ASG2017-2-opening", "url": "https://cfp.all-systems-go.io/ASG2017/talk/141/", "title": "Opening", "subtitle": "", "track": "default", "type": "default", "language": "en", "abstract": null, "description": "Check In and Say Hello!\n", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "attachments": [], "answers": []}, {"id": 3, "guid": "ed2561d7-673f-59b1-b494-b9cbeca41448", "logo": "", "date": "2017-10-21T07:45:00+00:00", "start": "07:45", "duration": "00:40", "room": "Event Loft", "slug": "ASG2017-3-really-crazy-container-troubleshooting-stories", "url": "https://cfp.all-systems-go.io/ASG2017/talk/115/", "title": "Really crazy container troubleshooting stories", "subtitle": "", "track": "Monitoring & Tracing", "type": "presentation", "language": "en", "abstract": null, "description": "In this talk, the presenter will share a few container troubleshooting stories that were encountered in the life of an infrastructure operator. The use cases are deliberately chosen to be a bit advanced and focused around exploring the inner workings of core libraries and kernel, to remind everyone that even the lowest level of modern systems need some love.\n\nThe talk will follow a hands-on agenda, interactively iterating over all the key points of the troubleshooting process, focusing on the different tools used and providing immediate value to the listener, who should be able to apply the various workflows to other scenarios.\n\nExample use cases presented:\n\n- Troubleshooting resource isolation between containers\n- Tracing the root cause of a crashing containerized application\n- Monitoring memory and performance issues in containers", "recording_license": "", "do_not_record": false, "persons": [{"id": 3, "code": "NG33PJ", "public_name": "Gianluca Borello", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 4, "guid": "7e1d21bc-0a55-5d8f-8321-f495e4c91fb2", "logo": "", "date": "2017-10-21T08:30:00+00:00", "start": "08:30", "duration": "00:25", "room": "Event Loft", "slug": "ASG2017-4-rust-memory-management", "url": "https://cfp.all-systems-go.io/ASG2017/talk/118/", "title": "Rust memory management", "subtitle": "", "track": "Debugging & Tooling", "type": "presentation", "language": "en", "abstract": "A quick introduction to the unique memory management concepts of Rust.", "description": "Rust is a systems programming language that focuses on safety and performance at the same time. Most people new to Rust, often struggle with memory management. The goal of this talk is to give a very quick overview of Rust's memory management.", "recording_license": "", "do_not_record": false, "persons": [{"id": 4, "code": "WPLP97", "public_name": "Zeeshan Ali", "biography": "", "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 5, "guid": "06a67ba0-2420-5097-bd7e-16f6018c8788", "logo": "", "date": "2017-10-21T09:00:00+00:00", "start": "09:00", "duration": "00:15", "room": "Event Loft", "slug": "ASG2017-5-incremental-adoption-of-open-services-with-habitat", "url": "https://cfp.all-systems-go.io/ASG2017/talk/104/", "title": "Incremental Adoption of Open Services with Habitat", "subtitle": "", "track": "Service Management", "type": "presentation", "language": "en", "abstract": "Open services mark a paradigm shift similar to the disruption caused by open-source software in the 90s, but the path to effective adoption of open services tooling is sometimes unclear. Blake will share patterns and learnings from his experience integrating one such tool, Habitat, at smartB GmbH.", "description": "The modern computing world revolves around delivering applications as services. Until recently, massively scalable services were the specialized domain of tech giants, and attempts by small teams to reproduce the tooling available to Fortune 100 players often led to frustration and wasted time.\n\nHabitat is part of a new family of tools aimed at making application runtimes and service orchestration layers safe, repeatable and fully open.\n\nAt smartB, Blake has brought Habitat to his org to reduce operational complexity, guarantee application runtime behavior and provide dependency isolation and transparency for applications and their corollary security profiles. smartB is his 5th startup in 10 years and his first foray into sustainability engineering.", "recording_license": "", "do_not_record": false, "persons": [{"id": 5, "code": "NUALJN", "public_name": "Blake Irvin", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 6, "guid": "862581db-7de3-5f4a-b8ae-281080236cd9", "logo": "", "date": "2017-10-21T09:15:00+00:00", "start": "09:15", "duration": "00:15", "room": "Event Loft", "slug": "ASG2017-6-break", "url": "https://cfp.all-systems-go.io/ASG2017/talk/144/", "title": "Break", "subtitle": "", "track": "default", "type": "default", "language": "en", "abstract": null, "description": "Have a tea, coffee and/or Club Mate!\n", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "attachments": [], "answers": []}, {"id": 7, "guid": "e309c105-1dd9-582b-ad8e-106a351faa5a", "logo": "", "date": "2017-10-21T09:30:00+00:00", "start": "09:30", "duration": "00:45", "room": "Event Loft", "slug": "ASG2017-7-azure-networking-integration-challenges", "url": "https://cfp.all-systems-go.io/ASG2017/talk/93/", "title": "Azure networking integration challenges", "subtitle": "", "track": "Networking", "type": "presentation", "language": "en", "abstract": "The introduction on Accelerated Networking on Azure created challenges integrating support in Linux distributions. The original method using bonding had issues that were solved by introducing a new mode called \"Transparent VF\". This mode solves issues with udev, cloudinit and distribution specific network initialization. This talk will also cover the process of how Linux support for Azure is integrated with upstreamand distributions.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"id": 6, "code": "JRWJWJ", "public_name": "Stephen Hemminger", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 8, "guid": "10b90da8-d7b6-5a47-983c-d722fdaab5f9", "logo": "", "date": "2017-10-21T10:15:00+00:00", "start": "10:15", "duration": "01:30", "room": "Event Loft", "slug": "ASG2017-8-lunch", "url": "https://cfp.all-systems-go.io/ASG2017/talk/146/", "title": "Lunch", "subtitle": "", "track": "default", "type": "default", "language": "en", "abstract": null, "description": "Yummy food available from food trucks in the courtyard\n", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "attachments": [], "answers": []}, {"id": 9, "guid": "a00de056-311a-55b8-bd90-57c20d72e5be", "logo": "", "date": "2017-10-21T11:45:00+00:00", "start": "11:45", "duration": "00:40", "room": "Event Loft", "slug": "ASG2017-9-systemd-facebook-a-year-later", "url": "https://cfp.all-systems-go.io/ASG2017/talk/126/", "title": "systemd @ Facebook \u2014 a year later", "subtitle": "", "track": "Service Management", "type": "presentation", "language": "en", "abstract": "We'll be talking about what we learned throughout the past year running systemd in production at Facebook: new challenges that have come up, how the integration process went and the areas of improvement we discovered. We'll also discuss our efforts building a monitoring solution for system services based on systemd.", "description": "This talk is a followup to Deploying systemd at scale that was presented at systemd.conf 2016, and covers the aftermath of the migration of our fleet to CentOS 7. Now that systemd is available everywhere, we found more and more services that started adopting it for their deployment, leveraging its features and occasionally exposing interesting behaviors. At the same time, we've been able to hone our process for integrating and rolling out new versions of systemd on the fleet, and started building tooling to manage and monitor it at scale.", "recording_license": "", "do_not_record": false, "persons": [{"id": 7, "code": "3SCYJP", "public_name": "Davide Cavalca", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 10, "guid": "74df8413-3027-59c2-a25d-5b7e96071cff", "logo": "", "date": "2017-10-21T12:30:00+00:00", "start": "12:30", "duration": "00:25", "room": "Event Loft", "slug": "ASG2017-10-state-of-the-rkt-container-runtime", "url": "https://cfp.all-systems-go.io/ASG2017/talk/123/", "title": "State of the rkt container runtime", "subtitle": "", "track": "Process Isolation", "type": "presentation", "language": "en", "abstract": "rkt is a modern container runtime, built for security, efficiency, and composability. It is one of the container runtimes supported by Kubernetes but the current implementation (\u201crktnetes\u201d) doesn\u2019t support the Container Runtime Interface (CRI). The work-in-progress CRI implementation is called rktlet.\n\nThis presentation will give an update on the rkt project, what new features were implemented recently and what\u2019s coming up. It will also give an update on the state of the rktlet: what features are missing and what workarounds should be removed before it becomes a complete implementation of the CRI.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"id": 8, "code": "GEWR7G", "public_name": "Iago L\u00f3pez Galeiras", "biography": "I'm a Production Engineer at Facebook on the Operating Systems team.", "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 11, "guid": "374a08c1-3218-5b73-a455-b3a8985ce985", "logo": "", "date": "2017-10-21T13:00:00+00:00", "start": "13:00", "duration": "00:40", "room": "Event Loft", "slug": "ASG2017-11-portals-dynamic-permissions-in-flatpak", "url": "https://cfp.all-systems-go.io/ASG2017/talk/114/", "title": "Portals, dynamic permissions in Flatpak", "subtitle": "", "track": "Process Isolation", "type": "presentation", "language": "en", "abstract": "Desktop application sandboxing is quite different than traditional\ncontainer isolation, learn how flatpak does it, using the concept of\nportals.\n", "description": "Flatpak is a distribution independent bundling and deployment system\nfor Linux, focusing on desktop applications. One core aspect of flatpak\nis application sandboxing, which has very different requirements on\nthe desktop than in the traditional container space. Applications need\nto be isolated from the system, yet in order to be easy and intuitive to use\nthey must integrate with the desktop environment in complex ways.\n\nFlatpak solves this by using a concept called Portals. This talk will\ndiscuss how Flatpak sandboxing/security works and the how Portals fit\nin this system.\n", "recording_license": "", "do_not_record": false, "persons": [{"id": 9, "code": "KBBBGM", "public_name": "Alexander Larsson", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 12, "guid": "7d11aaed-6aee-5a57-ac58-b40947b29e72", "logo": "", "date": "2017-10-21T13:45:00+00:00", "start": "13:45", "duration": "00:15", "room": "Event Loft", "slug": "ASG2017-12-containers-what-did-we-learn-", "url": "https://cfp.all-systems-go.io/ASG2017/talk/100/", "title": "Containers: What Did We Learn?", "subtitle": "", "track": "Process Isolation", "type": "presentation", "language": "en", "abstract": "Containers: love 'em or hate 'em -- whether you think they're the hottest new thing or yesteryear's same ideas in new clothing -- the both rapid and sustained rate of adoption of recent container technologies says one thing clearly: We Were Missing Something. But what, exactly? And have we found \"it\"? Or are we just beginning to uncover something new about the way we all, in our deepest hearts, wish computers would be? In this talk, we'll survey where containers came from, and question where they\u2019re going: a discussion that crosses package management, releasing, deployment, immutability, reproducibility, and questions how meanings of all these things are now changing.", "description": "Containers have brought a lot of new patterns and behaviors into focus. For example, atomic deploys have become part of everyday conversation; fully captured dependencies and snapshots are now the norm; and the very concept of \"releasing\" software is beginning to morph.\n\nBut many of these concepts -- at least, as implemented in popular container systems today -- seem to be somewhere between poorly integrated or outright in conflict with our present understanding of \"package managers\" and \"config management\".\n\nWhat do containers need to learn from the decades of package management before today? And what hints do the package managers we all know and love need to take from the explosion of containers? Containers are an exciting opportunity to revisit many of our oldest assumptions about how to design systems: let's take this opportunity to think carefully and ask tough questions.\n", "recording_license": "", "do_not_record": false, "persons": [{"id": 10, "code": "KWCMGE", "public_name": "Eric Myhre", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 13, "guid": "ef8235b5-d71d-5bf4-8e05-1ac5d4e7da32", "logo": "", "date": "2017-10-21T14:00:00+00:00", "start": "14:00", "duration": "00:15", "room": "Event Loft", "slug": "ASG2017-13-break", "url": "https://cfp.all-systems-go.io/ASG2017/talk/148/", "title": "Break", "subtitle": "", "track": "default", "type": "default", "language": "en", "abstract": null, "description": "Have a tea, coffee and/or Club Mate!\n", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "attachments": [], "answers": []}, {"id": 14, "guid": "9a3757dd-619f-552d-bcc6-99c1b9b6e516", "logo": "", "date": "2017-10-21T14:15:00+00:00", "start": "14:15", "duration": "00:40", "room": "Event Loft", "slug": "ASG2017-14-fix-forget-or-forge-a-new-path-", "url": "https://cfp.all-systems-go.io/ASG2017/talk/159/", "title": "Fix, forget, or forge a new path?", "subtitle": "", "track": "Security", "type": "presentation", "language": "en", "abstract": "As Infrastructure operators we're exposed to a lot of plumbing and not a lot of porcelain. Worse, because our concerns are often esoteric (in the eyes of application developers) we have to fix our own pipes too. Often this leads to the \"homeowners dilemma\"... Making the call of when to patch things up, when to rip out the pipes, and when to abandon gas lamps for electricity.\n\nWe outline a number of aging pipes, proposed (and implemented) solutions, and ideas for dragging our systems into the future. ", "description": "On the systems side AAA services haven't kept up with the pace of application development, our hardware is aging, and there are components of infrastructure that have fallen by the wayside. Modern switches still support (non-TLS) RADIUS and TACACS+, other networking gear still only supports SNMP v1, and then we've got logging...\n\nIn this talk we take stock of the landscape and discuss which pieces should be fixed, which desperately need to be abandoned, and which we have been thinking about all wrong.", "recording_license": "", "do_not_record": false, "persons": [{"id": 11, "code": "FVGL9F", "public_name": "Brian 'redbeard' Harrington", "biography": null, "answers": []}], "links": [], "attachments": [], "answers": []}, {"id": 15, "guid": "54a422f2-5538-510f-bed3-11b45f8f36b0", "logo": "", "date": "2017-10-21T15:00:00+00:00", "start": "15:00", "duration": "00:25", "room": "Event Loft", "slug": "ASG2017-15-streamlining-systemd-s-code-and-safety", "url": "https://cfp.all-systems-go.io/ASG2017/talk/124/", "title": "Streamlining systemd's code and safety", "subtitle": "", "track": "Service Management", "type": "presentation", "language": "en", "abstract": "Today, the systemd project uses a non-standard superset of C to get destructor-like functionality. But, we pay a heavy price for doing it this way: we lose compiler portability, use hundreds of boilerplate macros, and confuse static analysis tools (which don't always realize why we're not leaking memory). At compilation, the cleanup functionality gets mapped to the same facilities that handle C++ destructors. So, essentially, we're already using a non-standard version of C++ as well as a non-standard version of C. We can end this charade by following in GCC's footsteps and explicitly using a subset of C++. By doing so, we can shed thousands of lines of C-trying-to-be-C++. We can also improve memory safety and code readability -- all while keeping the feel of C.", "description": "
Today, the systemd project uses a non-standard superset of C to get destructor-like functionality. But, we pay a heavy price for doing it this way: we lose compiler portability, use hundreds of boilerplate macros, and confuse static analysis tools (which don't always realize why we're not leaking memory). At compilation, the cleanup functionality gets mapped to the same facilities that handle C++ destructors. So, essentially, we're already using a non-standard version of C++ as well as a non-standard version of C. We can end this charade by following in GCC's footsteps and explicitly using a subset of C++. By doing so, we can shed thousands of lines of C-trying-to-be-C++. We can also improve memory safety and code readability -- all while keeping the feel of C.
\n\nIn this presentation, we'll consider options for systems'd codebase:
\nWhen configuration changes, daemon-reload stops the world in an increasingly unsustainable way. The problem is getting worse for two reasons: (1) heavier use of systemd means more units and longer reload times and (2) expanded use of socket activation/D-Bus activation/automount means more things urgently need PID 1's attention. There are ways to fix this up, but we'll need to move away from stopping the world (the main event loop), throwing out most loaded state, reloading state, and then resuming event handling.
\n\nWe'll explore these options:
\nWe'll need to be careful to maintain the memory footprint on resource-constrained devices, but we have options:
\n