Programmer's Guide

Total Page:16

File Type:pdf, Size:1020Kb

Programmer's Guide Programmer’s Guide Release 2.2.0 January 16, 2016 CONTENTS 1 Introduction 1 1.1 Documentation Roadmap...............................1 1.2 Related Publications..................................2 2 Overview 3 2.1 Development Environment..............................3 2.2 Environment Abstraction Layer............................4 2.3 Core Components...................................4 2.4 Ethernet* Poll Mode Driver Architecture.......................6 2.5 Packet Forwarding Algorithm Support........................6 2.6 librte_net........................................6 3 Environment Abstraction Layer7 3.1 EAL in a Linux-userland Execution Environment..................7 3.2 Memory Segments and Memory Zones (memzone)................ 11 3.3 Multiple pthread.................................... 12 3.4 Malloc.......................................... 14 4 Ring Library 19 4.1 References for Ring Implementation in FreeBSD*................. 20 4.2 Lockless Ring Buffer in Linux*............................ 20 4.3 Additional Features.................................. 20 4.4 Use Cases....................................... 21 4.5 Anatomy of a Ring Buffer............................... 21 4.6 References....................................... 28 5 Mempool Library 31 5.1 Cookies......................................... 31 5.2 Stats.......................................... 31 5.3 Memory Alignment Constraints............................ 31 5.4 Local Cache...................................... 32 5.5 Use Cases....................................... 33 6 Mbuf Library 34 6.1 Design of Packet Buffers............................... 34 6.2 Buffers Stored in Memory Pools........................... 36 6.3 Constructors...................................... 36 6.4 Allocating and Freeing mbufs............................. 36 6.5 Manipulating mbufs.................................. 36 6.6 Meta Information.................................... 36 i 6.7 Direct and Indirect Buffers.............................. 38 6.8 Debug......................................... 39 6.9 Use Cases....................................... 39 7 Poll Mode Driver 40 7.1 Requirements and Assumptions........................... 40 7.2 Design Principles................................... 41 7.3 Logical Cores, Memory and NIC Queues Relationships.............. 42 7.4 Device Identification and Configuration....................... 42 7.5 Poll Mode Driver API................................. 44 8 IVSHMEM Library 47 8.1 IVHSHMEM Library API Overview.......................... 48 8.2 IVSHMEM Environment Configuration........................ 48 8.3 Best Practices for Writing IVSHMEM Applications................. 49 8.4 Best Practices for Running IVSHMEM Applications................ 49 9 Link Bonding Poll Mode Driver Library 50 9.1 Link Bonding Modes Overview............................ 50 9.2 Implementation Details................................ 51 9.3 Using Link Bonding Devices............................. 58 10 Timer Library 61 10.1 Implementation Details................................ 61 10.2 Use Cases....................................... 62 10.3 References....................................... 62 11 Hash Library 63 11.1 Hash API Overview.................................. 63 11.2 Implementation Details................................ 64 11.3 Entry distribution in hash table............................ 65 11.4 Use Case: Flow Classification............................ 66 11.5 References....................................... 67 12 LPM Library 68 12.1 LPM API Overview.................................. 68 12.2 Implementation Details................................ 68 13 LPM6 Library 72 13.1 LPM6 API Overview.................................. 72 13.2 Use Case: IPv6 Forwarding............................. 76 14 Packet Distributor Library 77 14.1 Distributor Core Operation.............................. 78 14.2 Worker Operation................................... 79 15 Reorder Library 80 15.1 Operation........................................ 80 15.2 Implementation Details................................ 80 15.3 Use Case: Packet Distributor............................. 81 16 IP Fragmentation and Reassembly Library 82 16.1 Packet fragmentation................................. 82 ii 16.2 Packet reassembly................................... 82 17 Multi-process Support 85 17.1 Memory Sharing.................................... 85 17.2 Deployment Models.................................. 86 17.3 Multi-process Limitations............................... 88 18 Kernel NIC Interface 89 18.1 The DPDK KNI Kernel Module............................ 89 18.2 KNI Creation and Deletion.............................. 91 18.3 DPDK mbuf Flow................................... 91 18.4 Use Case: Ingress................................... 92 18.5 Use Case: Egress................................... 92 18.6 Ethtool......................................... 92 18.7 Link state and MTU change.............................. 92 18.8 KNI Working as a Kernel vHost Backend...................... 92 19 Thread Safety of DPDK Functions 96 19.1 Fast-Path APIs..................................... 96 19.2 Performance Insensitive API............................. 97 19.3 Library Initialization.................................. 97 19.4 Interrupt Thread.................................... 97 20 Quality of Service (QoS) Framework 98 20.1 Packet Pipeline with QoS Support.......................... 98 20.2 Hierarchical Scheduler................................ 99 20.3 Dropper......................................... 123 20.4 Traffic Metering.................................... 132 21 Power Management 134 21.1 CPU Frequency Scaling................................ 134 21.2 Core-load Throttling through C-States........................ 135 21.3 API Overview of the Power Library.......................... 135 21.4 User Cases....................................... 135 21.5 References....................................... 135 22 Packet Classification and Access Control 136 22.1 Overview........................................ 136 22.2 Application Programming Interface (API) Usage.................. 141 23 Packet Framework 144 23.1 Design Objectives................................... 144 23.2 Overview........................................ 144 23.3 Port Library Design.................................. 145 23.4 Table Library Design.................................. 146 23.5 Pipeline Library Design................................ 160 23.6 Multicore Scaling................................... 162 23.7 Interfacing with Accelerators............................. 163 24 Vhost Library 164 24.1 Vhost API Overview.................................. 164 24.2 Vhost Implementation................................. 165 24.3 Vhost supported vSwitch reference......................... 166 iii 25 Port Hotplug Framework 167 25.1 Overview........................................ 167 25.2 Port Hotplug API overview.............................. 167 25.3 Reference....................................... 168 25.4 Limitations....................................... 168 26 Source Organization 169 26.1 Makefiles and Config................................. 169 26.2 Libraries........................................ 169 26.3 Drivers......................................... 170 26.4 Applications...................................... 170 27 Development Kit Build System 172 27.1 Building the Development Kit Binary......................... 172 27.2 Building External Applications............................ 174 27.3 Makefile Description.................................. 174 28 Development Kit Root Makefile Help 179 28.1 Configuration Targets................................. 179 28.2 Build Targets...................................... 179 28.3 Install Targets..................................... 180 28.4 Test Targets...................................... 180 28.5 Documentation Targets................................ 180 28.6 Deps Targets...................................... 181 28.7 Misc Targets...................................... 181 28.8 Other Useful Command-line Variables........................ 181 28.9 Make in a Build Directory............................... 181 28.10Compiling for Debug.................................. 182 29 Extending the DPDK 183 29.1 Example: Adding a New Library libfoo........................ 183 30 Building Your Own Application 185 30.1 Compiling a Sample Application in the Development Kit Directory........ 185 30.2 Build Your Own Application Outside the Development Kit............. 185 30.3 Customizing Makefiles................................ 185 31 External Application/Library Makefile help 187 31.1 Prerequisites...................................... 187 31.2 Build Targets...................................... 187 31.3 Help Targets...................................... 187 31.4 Other Useful Command-line Variables........................ 188 31.5 Make from Another Directory............................. 188 32 Performance Optimization Guidelines 189 32.1 Introduction....................................... 189 33 Writing Efficient Code 190 33.1 Memory......................................... 190 33.2 Communication Between lcores........................... 191 33.3 PMD Driver....................................... 192 33.4 Locks and Atomic Operations............................ 192 33.5 Coding Considerations................................ 193 iv 33.6 Setting the Target CPU Type............................. 193 34 Profile Your Application 194 35 Glossary 195 v CHAPTER ONE INTRODUCTION
Recommended publications
  • The Qosbox: Quantitative Service Differentiation in BSD Routers∗
    The QoSbox: Quantitative Service Differentiation in BSD Routers∗ Nicolas Christin Jorg¨ Liebeherr Information Networking Institute and The Edward S. Rogers Sr. Department of CyLab Japan Electrical and Computer Engineering Carnegie Mellon University University of Toronto 1-3-3-17 Higashikawasaki-cho 10 King’s College Road Chuo-ku, Kobe 650-0044, Japan Toronto, ON M5S 3G4, Canada [email protected] [email protected] Abstract We describe the design and implementation of the QoSbox, a configurable IP router that provides per-hop service differentiation on loss, delays and throughput to classes of traffic. The novel aspects of the QoSbox are that (1) the QoSbox does not rely on any external component (e.g., no traffic shaping and no admission control) to provide the desired service differentiation, but instead, (2) dynamically adapts packet forwarding and dropping decisions as a function of the instantaneous traffic arrivals and allows for temporary relaxation of some service objectives; also, (3) the QoSbox can enforce both absolute and proportional service differentiation on queuing delays, loss rates, and throughput at the same time. We focus on a publicly available implementation of the QoSbox in BSD-based PC-routers. We evaluate our implementation in a testbed of BSD routers over a FastEthernet network, and we sketch how the QoSbox can be implemented in high speed architectures. Keywords: Quality-of-Service Implementations, Service Differentiation, PC-Routers, BSD, High-Speed Networks. ∗Most of this work was done while both authors were with the University of Virginia. This work was supported in part by the National Science Foundation through grants ANI-9730103 and ANI-0085955.
    [Show full text]
  • Pf3e Index.Pdf
    INDEX Note: Pages numbers followed by f, n, priority-based queues, 136–145 or t indicate figures, notes, and tables, match rule for queue assignment, respectively. 137–138 overview, 134–135 Symbols performance improvement, 136–137 # (hash mark), 13, 15 queuing for servers in DMZ, ! (logical NOT) operator, 42 142–144 setting up, 135–136 A on FreeBSD, 135–136 on NetBSD, 136 Acar, Can Erkin, 173 on OpenBSD, 135 ACK (acknowledgment) packets transitioning to priority and class-based bandwidth allocation, queuing system, 131–133 139–140 anchors, 35–36 HFSC algorithm, 124, 126, 142 authpf program, 61, 63 priority queues, 132, 137–138 listing current contents of, 92 two-priority configuration, loading rules into, 92 120–121, 120n1 manipulating contents, 92 adaptive.end value, 188 relayd daemon, 74 adaptive firewalls, 97–99 restructuring rule set with, 91–94 adaptive.start value, 188 tagging to help policy routing, 93 advbase parameter, 153–154 ancontrol command, 46n1 advskew parameter, 153–154, 158–159 antispoof tool, 27, 193–195, 194f aggressive value, 192 ARP balancing, 151, 157–158 ALTQ (alternate queuing) framework, atomic rule set load, 21 9, 133–145, 133n2 authpf program, 59–63, 60 basic concepts, 134 basic authenticating gateways, class-based bandwidth allocation, 60–62 139–140 public networks, 62–63 overview, 135 queue definition, 139–140 tying queues into rule set, 140 B handling unwanted traffic, 144–145 bandwidth operating system-based queue actual available, 142–143 assignments, 145 class-based allocation of, 139–140 overloading to
    [Show full text]
  • Linux Kernel and Driver Development Training Slides
    Linux Kernel and Driver Development Training Linux Kernel and Driver Development Training © Copyright 2004-2021, Bootlin. Creative Commons BY-SA 3.0 license. Latest update: October 9, 2021. Document updates and sources: https://bootlin.com/doc/training/linux-kernel Corrections, suggestions, contributions and translations are welcome! embedded Linux and kernel engineering Send them to [email protected] - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/470 Rights to copy © Copyright 2004-2021, Bootlin License: Creative Commons Attribution - Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0/legalcode You are free: I to copy, distribute, display, and perform the work I to make derivative works I to make commercial use of the work Under the following conditions: I Attribution. You must give the original author credit. I Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. I For any reuse or distribution, you must make clear to others the license terms of this work. I Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Document sources: https://github.com/bootlin/training-materials/ - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/470 Hyperlinks in the document There are many hyperlinks in the document I Regular hyperlinks: https://kernel.org/ I Kernel documentation links: dev-tools/kasan I Links to kernel source files and directories: drivers/input/ include/linux/fb.h I Links to the declarations, definitions and instances of kernel symbols (functions, types, data, structures): platform_get_irq() GFP_KERNEL struct file_operations - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/470 Company at a glance I Engineering company created in 2004, named ”Free Electrons” until Feb.
    [Show full text]
  • Freebsd Handbook
    FreeBSD Handbook http://www.freebsd.org/doc/en_US.ISO8859-1/books/han... FreeBSD Handbook The FreeBSD Documentation Project Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The FreeBSD Documentation Project Welcome to FreeBSD! This handbook covers the installation and day to day use of FreeBSD 8.3-RELEASE and FreeBSD 9.1-RELEASE. This manual is a work in progress and is the work of many individuals. As such, some sections may become dated and require updating. If you are interested in helping out with this project, send email to the FreeBSD documentation project mailing list. The latest version of this document is always available from the FreeBSD web site (previous versions of this handbook can be obtained from http://docs.FreeBSD.org/doc/). It may also be downloaded in a variety of formats and compression options from the FreeBSD FTP server or one of the numerous mirror sites. If you would prefer to have a hard copy of the handbook, you can purchase one at the FreeBSD Mall. You may also want to search the handbook. REDISTRIBUTION AND USE IN SOURCE (XML DOCBOOK) AND 'COMPILED' FORMS (XML, HTML, PDF, POSTSCRIPT, RTF AND SO FORTH) WITH OR WITHOUT MODIFICATION, ARE PERMITTED PROVIDED THAT THE FOLLOWING CONDITIONS ARE MET: 1. REDISTRIBUTIONS OF SOURCE CODE (XML DOCBOOK) MUST RETAIN THE ABOVE COPYRIGHT NOTICE, THIS LIST OF CONDITIONS AND THE FOLLOWING DISCLAIMER AS THE FIRST LINES OF THIS FILE UNMODIFIED. 2. REDISTRIBUTIONS IN COMPILED FORM (TRANSFORMED TO OTHER DTDS, CONVERTED TO PDF, POSTSCRIPT, RTF AND OTHER FORMATS) MUST REPRODUCE THE ABOVE COPYRIGHT NOTICE, THIS LIST OF CONDITIONS AND THE FOLLOWING DISCLAIMER IN THE DOCUMENTATION AND/OR OTHER MATERIALS PROVIDED WITH THE DISTRIBUTION.
    [Show full text]
  • Tricore Architecture Manual for a Detailed Discussion of Instruction Set Encoding and Semantics
    User’s Manual, v2.3, Feb. 2007 TriCore 32-bit Unified Processor Core Embedded Applications Binary Interface (EABI) Microcontrollers Edition 2007-02 Published by Infineon Technologies AG 81726 München, Germany © Infineon Technologies AG 2007. All Rights Reserved. Legal Disclaimer The information given in this document shall in no event be regarded as a guarantee of conditions or characteristics (“Beschaffenheitsgarantie”). With respect to any examples or hints given herein, any typical values stated herein and/or any information regarding the application of the device, Infineon Technologies hereby disclaims any and all warranties and liabilities of any kind, including without limitation warranties of non- infringement of intellectual property rights of any third party. Information For further information on technology, delivery terms and conditions and prices please contact your nearest Infineon Technologies Office (www.infineon.com). Warnings Due to technical requirements components may contain dangerous substances. For information on the types in question please contact your nearest Infineon Technologies Office. Infineon Technologies Components may only be used in life-support devices or systems with the express written approval of Infineon Technologies, if a failure of such components can reasonably be expected to cause the failure of that life-support device or system, or to affect the safety or effectiveness of that device or system. Life support devices or systems are intended to be implanted in the human body, or to support and/or maintain and sustain and/or protect human life. If they fail, it is reasonable to assume that the health of the user or other persons may be endangered. User’s Manual, v2.3, Feb.
    [Show full text]
  • FSS) in Oracle Cloud Infrastructure
    Everyone Loves File: File Storage Service (FSS) in Oracle Cloud Infrastructure Bradley C. Kuszmaul Matteo Frigo Justin Mazzola Paluska Alexander (Sasha) Sandler Oracle Corporation Abstract 100 MB=s of bandwidth and 3000 operations per sec- ond for every terabyte stored. Customers can mount a File Storage Service (FSS) is an elastic filesystem pro- filesystem on an arbitrary number of NFS clients. The vided as a managed NFS service in Oracle Cloud In- size of a file or filesystem is essentially unbounded, lim- frastructure. Using a pipelined Paxos implementation, ited only by the practical concerns that the NFS pro- we implemented a scalable block store that provides lin- tocol cannot cope with files bigger than 16 EiB and earizable multipage limited-size transactions. On top of that we would need to deploy close to a million hosts the block store, we built a scalable B-tree that provides to store multiple exabytes. FSS provides the ability linearizable multikey limited-size transactions. By us- to take a snapshot of a filesystem using copy-on-write ing self-validating B-tree nodes and performing all B- techniques. Creating a filesystem or snapshot is cheap, tree housekeeping operations as separate transactions, so that customers can create thousands of filesystems, each key in a B-tree transaction requires only one page each with thousands of snapshots. The system is robust in the underlying block transaction. The B-tree holds against failures since it synchronously replicates data the filesystem metadata. The filesystem provides snap- and metadata 5-ways using Paxos [44]. shots by using versioned key-value pairs.
    [Show full text]
  • Circ-Tree: a B+-Tree Variant with Circular Design for Persistent Memory
    IEEE TRANASCTIONS ON XXXXXX 1 Circ-Tree: A B+-Tree Variant with Circular Design for Persistent Memory Chundong Wang, Gunavaran Brihadiswarn, Xingbin Jiang, and Sudipta Chattopadhyay Abstract—Several B+-tree variants have been developed to exploit the performance potential of byte-addressable non-volatile memory (NVM). In this paper, we attentively investigate the properties of B+-tree and find that, a conventional B+-tree node is a linear structure in which key-value (KV) pairs are maintained from the zero offset of the node. These pairs are shifted in a unidirectional fashion for insertions and deletions. Inserting and deleting one KV pair may inflict a large amount of write amplifications due to shifting KV pairs. This badly impairs the performance of in-NVM B+-tree. In this paper, we propose a novel circular design for B+-tree. With regard to NVM’s byte-addressability, our Circ-tree design embraces tree nodes in a circular structure without a fixed base address, and bidirectionally shifts KV pairs in a node for insertions and deletions to minimize write amplifications. We have implemented a prototype for Circ-Tree and conducted extensive experiments. Experimental results show that Circ-Tree significantly outperforms two state-of-the-art in-NVM B+-tree variants, i.e., NV-tree and FAST+FAIR, by up to 1.6× and 8.6×, respectively, in terms of write performance. The end-to-end comparison by running YCSB to KV store systems built on NV-tree, FAST+FAIR, and Circ-Tree reveals that Circ-Tree yields up to 29.3% and 47.4% higher write performance, respectively, than NV-tree and FAST+FAIR.
    [Show full text]
  • 15-213 Lectures 22 and 23: Synchronization
    15-213 Lectures 22 and 23: Synchronization Carnegie Mellon Carnegie Mellon Introduction Last Time: Threads Introduction to Computer Systems Concepts 15-213/18-243, fall 2009 Synchronization with Semaphores 23 rd Lecture, Nov 19 Today: Synchronization in Greater Depth Producer Consumer Buffer Pools and Condition Variables Instructors: Message Queues Roger B. Dannenberg and Greg Ganger Message Passing 2 Carnegie Mellon Carnegie Mellon Notifying With Semaphores Producer-Consumer on a Buffer That Holds One Item producer shared consumer /* buf1.c - producer-consumer int main() { thread buffer thread on 1-element buffer */ pthread_t tid_producer; #include “csapp.h” pthread_t tid_consumer; #define NITERS 5 /* initialize the semaphores */ Common synchronization pattern: Sem_init(&shared.empty, 0, 1); Producer waits for slot, inserts item in buffer, and notifies consumer void *producer(void *arg); Sem_init(&shared.full, 0, 0); Consumer waits for item, removes it from buffer, and notifies producer void *consumer(void *arg); /* create threads and wait */ struct { Pthread_create(&tid_producer, NULL, int buf; /* shared var */ producer, NULL); Examples sem_t full; /* sems */ Pthread_create(&tid_consumer, NULL, Multimedia processing: sem_t empty; consumer, NULL); } shared; Pthread_join(tid_producer, NULL); Producer creates MPEG video frames, consumer renders them Pthread_join(tid_consumer, NULL); Event-driven graphical user interfaces Producer detects mouse clicks, mouse movements, and keyboard hits exit(0); and inserts corresponding
    [Show full text]
  • A SRAM-Based Architecture for Trie-Based IP Lookup Using FPGA
    16th International Symposium on Field-Programmable Custom Computing Machines A SRAM-based Architecture for Trie-based IP Lookup Using FPGA Hoang Le, Weirong Jiang, Viktor K. Prasanna Ming Hsieh Department of Electrical Engineering University of Southern California Los Angeles, CA 90089, USA {hoangle, weirongj, prasanna}@usc.edu Abstract Most hardware-based solutions for high speed packet forwarding in routers fall into two main catego- Internet Protocol (IP) lookup in routers can be ries: ternary content addressable memory (TCAM)- implemented by some form of tree traversal. Pipelining based and dynamic/static random access memory can dramatically improve the search throughput. How- (DRAM/SRAM)-based solutions. Although TCAM- ever, it results in unbalanced memory allocation over based engines can retrieve results in just one clock the pipeline stages. This has been identified as a major cycle, their throughput is limited by the relatively low challenge for pipelined solutions. In this paper, an IP speed of TCAMs. They are expensive and offer little lookup rate of 325 MLPS (millions lookups per second) flexibility to adapt to new addressing and routing pro- is achieved using a novel SRAM-based bidirectional tocols [3]. As shown in Table 1, SRAMs outperform optimized linear pipeline architecture on Field Pro- TCAMs with respect to speed, density, and power con- grammable Gate Array, named BiOLP, for tree-based sumption. search engines in IP routers. BiOLP can also achieve a Table 1: Comparison of TCAM and SRAM technologies perfectly balanced memory distribution over the pipe- line stages. Moreover, by employing caching to exploit TCAM SRAM the Internet traffic locality, BiOLP can achieve a high (18Mb chip) (18Mb chip) throughput of up to 1.3 GLPS (billion lookups per Maximum clock rate (MHz) 266 [4] 400 [5], [6] second).
    [Show full text]
  • Eodbox Documentation Release 1.0
    EODBox Documentation Release 1.0 Bailey Winter, Jason Gallant May 26, 2016 Contents 1 How Does It Work?? 3 1.1 Utilizing Programmable Real-Time Units (PRUs)............................3 1.2 Device Details and Specifications....................................4 1.3 Run Modes and Data Storage......................................8 2 How Do I Make My Own?? 11 2.1 Getting Started.............................................. 11 2.2 Modifying the BeagleBone for Communication............................. 12 2.3 External Storage............................................. 12 2.4 Modifying the PRU Memory....................................... 14 2.5 Enable the Real-Time Clock....................................... 15 3 Indices and tables 17 i ii EODBox Documentation, Release 1.0 Weakly electric fish are capable of both emitting and detecting electric signals called electric organ discharges (EODs). Current methods of recording EODs use multiple pieces of equipment that are fragile, expensive and inconvenient to transport, and rely on commercial software to record and analyze data. The goal of this project was to create a low cost and portable alternative to current research equipment. We created a device that we beleive circumvents these limitations, based the BeagleBone Black Rev C (BBB). The BBB uses a Texas Instruments AM335x 1GHz ARM© Cortex-A8, a reduced instruction set computing microprocessor that is capable of running two billion instructions per second. This is powerful processor for its size and is capable of running a full operating system. Our goal was to create a device with a user interface that allows for an adjustable, high- speed sampling rate, a designated run time, adjustable gain, flexible storage, and two ‘run modes’: a raw data recording a mode where EODs are automatically extracted.
    [Show full text]
  • Chapter 7: Queues and Deques
    Chapter 7: Queues and Deques After the stack, the next simplest data abstraction is the queue. As with the stack, the queue can be visualized with many examples you are already familiar with from everyday life. A simple illustration is a line of people waiting to enter a theater. The fundamental property of the queue is that items are inserted at one end (the rear of the line) and removed from the other (the door to the theater). This means that the order that items are removed matches the order that they are inserted. Just as a stack was described as a LIFO (last-in, first-out) container, this means a queue can be described as FIFO (first in, first out). A variation is termed the deque, pronounced “deck”, which stands for double-ended queue. In a deque values can be inserted at either the front or the back, and similarly the deck allows values to be removed from either the front or the back. A collection of peas in a straw is a useful mental image. (Or, to update the visual image, a series of tapioca buds in a bubble-tea straw). Queues and deques are used in a number of ways in computer applications. A printer, for example, can only print one job at a time. During the time it is printing there may be many different requests for other output to be printed. To handle these the printer will maintain a queue of pending print tasks. Since you want the results to be produced in the order that they are received, a queue is the appropriate data structure.
    [Show full text]
  • An Overview of Security in the Freebsd Kernel 131 Dr
    AsiaBSDCon 2014 Proceedings March 13-16, 2014 Tokyo, Japan Copyright c 2014 BSD Research. All rights reserved. Unauthorized republication is prohibited. Published in Japan, March 2014 INDEX P1A: Bold, fast optimizing linker for BSD — Luba Tang P1B: Visualizing Unix: Graphing bhyve, ZFS and PF with Graphite 007 Michael Dexter P2A: LLVM in the FreeBSD Toolchain 013 David Chisnall P2B: NPF - progress and perspective 021 Mindaugas Rasiukevicius K1: OpenZFS: a Community of Open Source ZFS Developers 027 Matthew Ahrens K2: Bambi Meets Godzilla: They Elope 033 Eric Allman P3A: Snapshots, Replication, and Boot-Environments—How new ZFS utilities are changing FreeBSD & PC-BSD 045 Kris Moore P3B: Netmap as a core networking technology 055 Luigi Rizzo, Giuseppe Lettieri, and Michio Honda P4A: ZFS for the Masses: Management Tools Provided by the PC-BSD and FreeNAS Projects 065 Dru Lavigne P4B: OpenBGPD turns 10 years - Design, Implementation, Lessons learned 077 Henning Brauer P5A: Introduction to FreeNAS development 083 John Hixson P5B: VXLAN and Cloud-based networking with OpenBSD 091 Reyk Floeter INDEX P6A: Nested Paging in bhyve 097 Neel Natu and Peter Grehan P6B: Developing CPE Routers based on NetBSD: Fifteen Years of SEIL 107 Masanobu SAITOH and Hiroki SUENAGA P7A: Deploying FreeBSD systems with Foreman and mfsBSD 115 Martin Matuška P7B: Implementation and Modification for CPE Routers: Filter Rule Optimization, IPsec Interface and Ethernet Switch 119 Masanobu SAITOH and Hiroki SUENAGA K3: Modifying the FreeBSD kernel Netflix streaming servers — Scott Long K4: An Overview of Security in the FreeBSD Kernel 131 Dr. Marshall Kirk McKusick P8A: Transparent Superpages for FreeBSD on ARM 151 Zbigniew Bodek P8B: Carve your NetBSD 165 Pierre Pronchery and Guillaume Lasmayous P9A: How FreeBSD Boots: a soft-core MIPS perspective 179 Brooks Davis, Robert Norton, Jonathan Woodruff, and Robert N.
    [Show full text]