Final Step #7. Memory mapping For Sunday 15/05 23h59

Size: px
Start display at page:

Download "Final Step #7. Memory mapping For Sunday 15/05 23h59"

Transcription

1 Final Step #7 Memory mapping For Sunday 15/05 23h59

2 Remove the packet content print in the rx_handler rx_handler shall not print the first X bytes of the packet anymore nor any per-packet message This is important to do as it affects a lot the performances and we ll work on performances in this step

3 Go back to mode 0 on file close When a file descriptor is closed, go back to mode 0 for the attached device. This makes the handling of module close very easier : in fact there is nothing to do. If you set the.owner = THIS_MODULE for file_operations correctly, the module will not be removed until all file are closed (as when a file is opened, a try_get_module is automatically done on your module).

4 Mmap (~6 points) Implement the mmap facility of your fastnet file_operations When the user call mmap(), it creates a memory zone mapped between user space and kernel space. To know the size of the space, you will modify the struct fastnet_register like this : struct fastnet_register { char ifname[ifnamsiz]; int mode; size_t buffer_size; unsigned int buffer_nr; }; The total size is buffer_size*buffer_nr. The default size of a buffer is 2048 bytes, the default number of buffer is 512. If the user give values == 0, the default value is used. All values shall be power of two. Pay attention to use copy_to_user to update the user fastnet_register struct to inform him of the final values. If the space given to the user by the mmap facility is different than buffe_size*buffer_nr, return an error code of -EINVAL.

5 Mmap zone layout This is not a double entry table! This is a big fat space divided in buffers. Buffer buffer_size Buffer Buffer_nr * buffer_size Buffer Buffer

6 Buffer layout Each packet content will be copied inside the buffer. The first bytes of each buffer are reserved to put some metadata. struct fastnet_descriptor { uint16_t length; uint16_t data_off; } Where length is the size of the packet inside the buffer. The real content of the packet will start at (unsigned char*)buffer + data_off; bytes (not bits!). For example data_off should be at least 4, as fastnet_descriptor is 4 bytes the packet content cannot start before the end of this descriptor zone. buffer_size leng th data _off Packet content data_off Length

7 Buffer lifecycle A userspace application can know if the first packet is available by looping on the length field of the first buffer. When the length is not zero, it means the content is available. So you should first copy the packet content, then the data_offset then the length as it will indicate to the user space app that the buffer is ready. The user application can then move to the next buffer and wait for it to be!= 0. This method is called polling, this is a non-blocking method, meaning that the application will have to check by itself from time to time if the next length field changed. Usually if there is no packet, doing a usleep() is good practice to not eat 100% of the cpu looping on the length field. When the userspace application has finished using the packet, it will release the buffer by setting the length to 0. The kernel can then reuse buffers using the same technique. No need to loop, when you need a new buffer, check if the next one has a length equal to 0. Use the buffer zone as a ring (after the last buffer you go to 0). No need to prevent fragmentation (always go to the next one and check for length)

8 Specifications If the buffer is not big enough, the end of the packet data will be lost If there is no more buffer available inside the space, packets are dropped Copy the very start of the packet with the ethernet headers, so not skb- >data but skb_mac_header(skb) Read will still work, but it will use the underlying shared memory zone If the buffer space cannot be allocated, the ioctl will return -ENOMEM

9 Mmap in practice int fastnet_mmap(struct file * filp, struct vm_area_struct * vma) filp, you already know about it. The filp->private_data should allow you (maybe through the net_device->rx_handler_data or directly) to recover the space allocated during the ioctl. vma represent the mapped zone already created for you by the kernel, this is a part of a page table entry with empty mappings, that you must set correctly. Look around remap_pfn_range and vmalloc_user/remap_vmalloc_range to create the mapping

10 Buffer space accessors struct fastnet_space { //Size of one buffer (default 2048) size_t buffer_size; //Number of buffer (default 512) unsigned int buffer_nr; //Final size of the buffer size_t size; //Pointer to the buffer void* mem; //Index of the next buffer to use for putting data unsigned int head; //Index of the next packet to read when the user is using read instead of mmap unsigned int next_read; }; void* buf_at(struct fastnet_space* space, int i) { return (void*)(((unsigned char*)space->mem) + (space->buffer_size * i)); } int next_buf(struct fastnet_space* space, int i) { if (++i == space->buffer_nr) i = 0; return i; } int is_full(struct fastnet_space* space) { return buf_len(buf_at(space,space->head))!= 0; } #define buf_descriptor(buf) ((struct fastnet_descriptor*)buf) #define buf_len(buf) (buf_descriptor(buf)->length) #define buf_off(buf) (buf_descriptor(buf)->data_off) #define buf_data(buf) (((unsigned char*)buf) + buf_descriptor(buf)->data_off)

11 Mode 3 (~3 points) + 2 bonus You will provide a generic way that any driver could implement to achieve full zero-copy. This will be the mode 3. If the driver sees that the device is in fastnet mode 3, it will use directly buffers from the memory zone to receive packets and therefore you won t even need your rx_handler as the packet will directly be received in the memory zone, and won t be processed by the kernel stack, even not calling the napi_* or gro_* and *receive_skb_core* functions. You will implement the mode 3 support for the e1000 driver. Another driver developer should be able to make its driver compatible staying totally generic (using net_device_ops functions, setting some flags, ). There should probably be a fastnet_get_buffer function to allow the driver to get the next free buffer, etc... No packet copy can happen, as you will give your buffer+data_off address to the NIC rings directly. Of course you ll have to copy the length in the buffer yourself after receiving the packet

12 Mode 3 specs If a particular device does not support fastnet mode 3 but the user tries to set it, you can go back in mode 2 and display a message in the log, and put back 2 in fastnet_register->mode You can let the register_rx_handler even in mode 3 even if it s not used

13 Profiling (~3 points) You will profile the speed to show the advantages of each methods to receive packets in userspace : A libpcap-based application A fastnet application using read, on mode 1,2,3 A fastnet application using mmap, on mode 1,2,3 Make a conclusion about the performance gain/loss, and the state of the Linux network stack for receiving raw packets, your thoughts about it knowing that in the real world, it is what is used (generally, libpcap applications). Ensure that your test VM use only 1 core Use packeth to generate 64 byte UDP packets and overwhelm your VM as much as you can, you may use multiple ethernet device and multiple core on your host until the guest is using 100% of his CPU to throw away packets. Use the linux perf tool to profile your host, and explain in your report with nice figures/tables where the CPU time is lost.

14 Compile perf cd linux /perf/tools sudo apt-get install libelf-dev binutils-dev python libgtk2.0-dev buildessential flex bison liblzma-dev libnuma-dev python-dev libperl-dev libslang2-dev libaudit-dev make sudo./perf top -a -g -k ~/OS/linux /vmlinux This will allow you to see live performances, but as your CPU is taken at 100% by interrupt handlers, perf will become very slow. Use perf record then perf report/annotate to take your time and analyse what happened after ~30 seconds of capture.

15 Report + Clean code + Re-evaluation of last steps after correction (~8 points) Follow the same rules than for previous steps (comments, patch, report, submission, obligations, ) Explain what you did, where, how, why, how you finded it. The problems you had How you solved them I will also look back at all the rest of the code as this is the final step. It should be easy to grab those points!

Kernel perf tool user guide

Kernel perf tool user guide Kernel perf tool user guide 2017-10-16 Reversion Record Date Rev Change Description Author 2017-10-16 V0.1 Inital Zhang Yongchang 1 / 10 catalog 1 PURPOSE...4 2 TERMINOLOGY...4 3 ENVIRONMENT...4 3.1 HARDWARE

More information

What is a Linux Device Driver? Kevin Dankwardt, Ph.D. VP Technology Open Source Careers

What is a Linux Device Driver? Kevin Dankwardt, Ph.D. VP Technology Open Source Careers What is a Linux Device Driver? Kevin Dankwardt, Ph.D. VP Technology Open Source Careers kdankwardt@oscareers.com What does a driver do? Provides a more convenient interface to user-space for the hardware.

More information

Demystifying Network Cards

Demystifying Network Cards Demystifying Network Cards Paul Emmerich December 27, 2017 Chair of Network Architectures and Services About me PhD student at Researching performance of software packet processing systems Mostly working

More information

Linux Strace tool user guide

Linux Strace tool user guide Linux Strace tool user guide 2017-10-13 Reversion Record Date Rev Change Description Author 2017-10-13 V0.1 Initial Zhang Yongchang 1 / 9 catalog 1 PURPOSE...4 2 TERMINOLOGY...4 3 ENVIRONMENT...4 3.1 HARDWARE

More information

Memory Mapping. Sarah Diesburg COP5641

Memory Mapping. Sarah Diesburg COP5641 Memory Mapping Sarah Diesburg COP5641 Memory Mapping Translation of address issued by some device (e.g., CPU or I/O device) to address sent out on memory bus (physical address) Mapping is performed by

More information

ECEN 449 Microprocessor System Design. Hardware-Software Communication. Texas A&M University

ECEN 449 Microprocessor System Design. Hardware-Software Communication. Texas A&M University ECEN 449 Microprocessor System Design Hardware-Software Communication 1 Objectives of this Lecture Unit Learn basics of Hardware-Software communication Memory Mapped I/O Polling/Interrupts 2 Motivation

More information

Operating Systems. 17. Sockets. Paul Krzyzanowski. Rutgers University. Spring /6/ Paul Krzyzanowski

Operating Systems. 17. Sockets. Paul Krzyzanowski. Rutgers University. Spring /6/ Paul Krzyzanowski Operating Systems 17. Sockets Paul Krzyzanowski Rutgers University Spring 2015 1 Sockets Dominant API for transport layer connectivity Created at UC Berkeley for 4.2BSD Unix (1983) Design goals Communication

More information

CS5460/6460: Operating Systems. Lecture 24: Device drivers. Anton Burtsev April, 2014

CS5460/6460: Operating Systems. Lecture 24: Device drivers. Anton Burtsev April, 2014 CS5460/6460: Operating Systems Lecture 24: Device drivers Anton Burtsev April, 2014 Device drivers Conceptually Implement interface to hardware Expose some high-level interface to the kernel or applications

More information

Tutorial 2. Linux networking, sk_buff and stateless packet filtering. Roei Ben-Harush Check Point Software Technologies Ltd.

Tutorial 2. Linux networking, sk_buff and stateless packet filtering. Roei Ben-Harush Check Point Software Technologies Ltd. Tutorial 2 Linux networking, sk_buff and stateless packet filtering Agenda 1 Linux file system - networking 2 3 4 sk_buff Stateless packet filtering About next assignment 2 Agenda 1 Linux file system -

More information

Applications of. Virtual Memory in. OS Design

Applications of. Virtual Memory in. OS Design Applications of Virtual Memory in OS Design Nima Honarmand Introduction Virtual memory is a powerful level of indirection Indirection: IMO, the most powerful concept in Computer Science Fundamental Theorem

More information

libnetfilter_log Reference Manual

libnetfilter_log Reference Manual libnetfilter_log Reference Manual x.y Generated by Doxygen 1.4.6 Tue Mar 21 13:47:12 2006 CONTENTS 1 Contents 1 libnetfilter_log File Index 1 2 libnetfilter_log File Documentation 1 1 libnetfilter_log

More information

CS 378 (Spring 2003)

CS 378 (Spring 2003) Department of Computer Sciences THE UNIVERSITY OF TEXAS AT AUSTIN CS 378 (Spring 2003) Linux Kernel Programming Yongguang Zhang (ygz@cs.utexas.edu) Copyright 2003, Yongguang Zhang This Lecture Device Driver

More information

Recitation #11 Malloc Lab. November 7th, 2017

Recitation #11 Malloc Lab. November 7th, 2017 18-600 Recitation #11 Malloc Lab November 7th, 2017 1 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than 32 bit Encourages

More information

Introduction to Linux Device Drivers Recreating Life One Driver At a Time

Introduction to Linux Device Drivers Recreating Life One Driver At a Time Introduction to Linux Device Drivers Recreating Life One Driver At a Time Muli Ben-Yehuda mulix@mulix.org IBM Haifa Research Labs, Haifa Linux Club Linux Device Drivers, Technion, Jan 2004 p.1/42 why write

More information

A practical introduction to XDP

A practical introduction to XDP A practical introduction to XDP Jesper Dangaard Brouer (Red Hat) Andy Gospodarek (Broadcom) Linux Plumbers Conference (LPC) Vancouver, Nov 2018 1 What will you learn? Introduction to XDP and relationship

More information

MP3: VIRTUAL MEMORY PAGE FAULT MEASUREMENT

MP3: VIRTUAL MEMORY PAGE FAULT MEASUREMENT MP3: VIRTUAL MEMORY PAGE FAULT MEASUREMENT University of Illinois at Urbana-Champaign Department of Computer Science CS423 Fall 2011 Keun Soo Yim GOAL A Linux kernel module to profile VM system events

More information

Input / Output. Kevin Webb Swarthmore College April 12, 2018

Input / Output. Kevin Webb Swarthmore College April 12, 2018 Input / Output Kevin Webb Swarthmore College April 12, 2018 xkcd #927 Fortunately, the charging one has been solved now that we've all standardized on mini-usb. Or is it micro-usb? Today s Goals Characterize

More information

CS 453: Operating Systems Programming Project 5 (100 points) Linux Device Driver

CS 453: Operating Systems Programming Project 5 (100 points) Linux Device Driver CS 453: Operating Systems Programming Project 5 (100 points) Linux Device Driver 1 Setup In this assignment, we will write a simple character driver called booga. Please do a git pull --rebase in your

More information

ECE 598 Advanced Operating Systems Lecture 10

ECE 598 Advanced Operating Systems Lecture 10 ECE 598 Advanced Operating Systems Lecture 10 Vince Weaver http://web.eece.maine.edu/~vweaver vincent.weaver@maine.edu 22 February 2018 Announcements Homework #5 will be posted 1 Blocking vs Nonblocking

More information

A Linux multimedia platform for SH-Mobile processors

A Linux multimedia platform for SH-Mobile processors A Linux multimedia platform for SH-Mobile processors Embedded Linux Conference 2009 April 7, 2009 Abstract Over the past year I ve been working with the Japanese semiconductor manufacturer Renesas, developing

More information

jelly-near jelly-far

jelly-near jelly-far sudo./run Two interfaces created: os0, os1 Two networks created: (add to /etc/networks) peanut where os0 will connect 192.168.0.0 grape where os1 will connect 192.168.1.0 Two IP addresses in peanut: (add

More information

HKG net_mdev: Fast-path userspace I/O. Ilias Apalodimas Mykyta Iziumtsev François-Frédéric Ozog

HKG net_mdev: Fast-path userspace I/O. Ilias Apalodimas Mykyta Iziumtsev François-Frédéric Ozog HKG18-110 net_mdev: Fast-path userspace I/O Ilias Apalodimas Mykyta Iziumtsev François-Frédéric Ozog Why userland I/O Time sensitive networking Developed mostly for Industrial IOT, automotive and audio/video

More information

19: Networking. Networking Hardware. Mark Handley

19: Networking. Networking Hardware. Mark Handley 19: Networking Mark Handley Networking Hardware Lots of different hardware: Modem byte at a time, FDDI, SONET packet at a time ATM (including some DSL) 53-byte cell at a time Reality is that most networking

More information

Virtual Memory Paging

Virtual Memory Paging Virtual Memory Paging An important task of a virtual-memory system is to relocate pages from physical memory out to disk Early UNIX systems swapped out the entire process at once Modern UNIX systems relay

More information

High Performance Real-Time Operating Systems. Device Driver. User s and Reference Manual

High Performance Real-Time Operating Systems. Device Driver. User s and Reference Manual High Performance Real-Time Operating Systems Device Driver User s and Reference Manual Copyright Copyright (C) 2010 by SCIOPTA Systems AG. All rights reserved. No part of this publication may be reproduced,

More information

SYSTEM CALL IMPLEMENTATION. CS124 Operating Systems Fall , Lecture 14

SYSTEM CALL IMPLEMENTATION. CS124 Operating Systems Fall , Lecture 14 SYSTEM CALL IMPLEMENTATION CS124 Operating Systems Fall 2017-2018, Lecture 14 2 User Processes and System Calls Previously stated that user applications interact with the kernel via system calls Typically

More information

Operating System Concepts Ch. 11: File System Implementation

Operating System Concepts Ch. 11: File System Implementation Operating System Concepts Ch. 11: File System Implementation Silberschatz, Galvin & Gagne Introduction When thinking about file system implementation in Operating Systems, it is important to realize the

More information

Memory Management. To do. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory

Memory Management. To do. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory Management To do q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory management Ideal memory for a programmer large, fast, nonvolatile and cheap not

More information

Memory Management. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory

Memory Management. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory Management q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory management Ideal memory for a programmer large, fast, nonvolatile and cheap not an option

More information

Asynchronous Events on Linux

Asynchronous Events on Linux Asynchronous Events on Linux Frederic.Rossi@Ericsson.CA Open System Lab Systems Research June 25, 2002 Ericsson Research Canada Introduction Linux performs well as a general purpose OS but doesn t satisfy

More information

Process Environment. Pradipta De

Process Environment. Pradipta De Process Environment Pradipta De pradipta.de@sunykorea.ac.kr Today s Topic Program to process How is a program loaded by the kernel How does kernel set up the process Outline Review of linking and loading

More information

Character Device Drivers One Module - Multiple Devices

Character Device Drivers One Module - Multiple Devices Review from previous classes Three Types: Block, Character, and Network Interface Device Drivers MAJOR & MINOR numbers assigned register_chrdev_region(), alloc_chrdev_region(), unregister_chrdev_region()

More information

Kprobes Presentation Overview

Kprobes Presentation Overview Kprobes Presentation Overview This talk is about how using the Linux kprobe kernel debugging API, may be used to subvert the kernels integrity by manipulating jprobes and kretprobes to patch the kernel.

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Spring 2018 L20 Virtual Memory Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 Questions from last time Page

More information

NPTEL Course Jan K. Gopinath Indian Institute of Science

NPTEL Course Jan K. Gopinath Indian Institute of Science Storage Systems NPTEL Course Jan 2012 (Lecture 17) K. Gopinath Indian Institute of Science Accessing Devices/Device Driver Many ways to access devices under linux Non-block based devices ( char ) - stream

More information

Building Ethernet Drivers on RTLinux-GPL 1

Building Ethernet Drivers on RTLinux-GPL 1 Building Ethernet Drivers on RTLinux-GPL 1 Sergio Pérez, Joan Vila, Ismael Ripoll Department of Computer Engineering Universitat Politècnica de Valencia Camino de Vera, s/n. 46022 Valencia,SPAIN {serpeal,jvila,iripoll@disca.upv.es

More information

Operating Systems (234123) Spring 2017 (Homework Wet 1) Homework 1 Wet

Operating Systems (234123) Spring 2017 (Homework Wet 1) Homework 1 Wet Homework 1 Wet Due Date: 30/4/2017 23:00 Teaching assistant in charge: Yehonatan Buchnik Important: the Q&A for the exercise will take place at a public forum Piazza only. Critical updates about the HW

More information

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001 K42 Team modified October 2001 This paper discusses how K42 uses Linux-kernel components to support a wide range of hardware, a full-featured TCP/IP stack and Linux file-systems. An examination of the

More information

{ } Embedded Montreal Meetup. Char *lecture = Lecture 2 Deep Packet Inspection in Userspace ;

{ } Embedded Montreal Meetup. Char *lecture = Lecture 2 Deep Packet Inspection in Userspace ; { } Embedded Montreal Meetup October 17 th, 2014 Ron Brash Embedded Developer Ron.brash@gmail.com Char *lecture = Lecture 2 Deep Packet Inspection in Userspace ; Objectives Quick introduction Refresher

More information

High Speed Packet Filtering on Linux

High Speed Packet Filtering on Linux past, present & future of High Speed Packet Filtering on Linux Gilberto Bertin $ whoami System engineer at Cloudflare DDoS mitigation team Enjoy messing with networking and low level things Cloudflare

More information

OS COMPONENTS OVERVIEW OF UNIX FILE I/O. CS124 Operating Systems Fall , Lecture 2

OS COMPONENTS OVERVIEW OF UNIX FILE I/O. CS124 Operating Systems Fall , Lecture 2 OS COMPONENTS OVERVIEW OF UNIX FILE I/O CS124 Operating Systems Fall 2017-2018, Lecture 2 2 Operating System Components (1) Common components of operating systems: Users: Want to solve problems by using

More information

Heap Arrays. Steven R. Bagley

Heap Arrays. Steven R. Bagley Heap Arrays Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index a[42] = 35; Variables and arrays have a type int, char, double,

More information

- Knowledge of basic computer architecture and organization, ECE 445

- Knowledge of basic computer architecture and organization, ECE 445 ECE 446: Device Driver Development Fall 2014 Wednesdays 7:20-10 PM Office hours: Wednesdays 6:15-7:15 PM or by appointment, Adjunct office Engineering Building room 3707/3708 Last updated: 8/24/14 Instructor:

More information

HIGH-PERFORMANCE NETWORKING :: USER-LEVEL NETWORKING :: REMOTE DIRECT MEMORY ACCESS

HIGH-PERFORMANCE NETWORKING :: USER-LEVEL NETWORKING :: REMOTE DIRECT MEMORY ACCESS HIGH-PERFORMANCE NETWORKING :: USER-LEVEL NETWORKING :: REMOTE DIRECT MEMORY ACCESS CS6410 Moontae Lee (Nov 20, 2014) Part 1 Overview 00 Background User-level Networking (U-Net) Remote Direct Memory Access

More information

Important From Last Time

Important From Last Time Important From Last Time Embedded C Ø Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Today Advanced C What C programs mean How to create C programs that mean nothing

More information

Software Routers: NetMap

Software Routers: NetMap Software Routers: NetMap Hakim Weatherspoon Assistant Professor, Dept of Computer Science CS 5413: High Performance Systems and Networking October 8, 2014 Slides from the NetMap: A Novel Framework for

More information

Memory management. Johan Montelius KTH

Memory management. Johan Montelius KTH Memory management Johan Montelius KTH 2017 1 / 22 C program # include int global = 42; int main ( int argc, char * argv []) { if( argc < 2) return -1; int n = atoi ( argv [1]); int on_stack

More information

Operating Systems 2010/2011

Operating Systems 2010/2011 Operating Systems 2010/2011 Input/Output Systems part 1 (ch13) Shudong Chen 1 Objectives Discuss the principles of I/O hardware and its complexity Explore the structure of an operating system s I/O subsystem

More information

Hunting Down Data Races in the Linux Kernel

Hunting Down Data Races in the Linux Kernel Hunting Down Data Races in the Linux Kernel Eugene A. Shatokhin www.rosalab.com Data Race "Simultaneous access to the same memory location by multiple threads, where at least one of the accesses modifies

More information

ntop Users Group Meeting

ntop Users Group Meeting ntop Users Group Meeting PF_RING Tutorial Alfredo Cardigliano Overview Introduction Installation Configuration Tuning Use cases PF_RING Open source packet processing framework for

More information

Kernel Modules. Kartik Gopalan

Kernel Modules. Kartik Gopalan Kernel Modules Kartik Gopalan Kernel Modules Allow code to be added to the kernel, dynamically Only those modules that are needed are loaded. Unload when no longer required - frees up memory and other

More information

Analysis of User Level Device Driver usability in embedded application

Analysis of User Level Device Driver usability in embedded application Analysis of User Level Device Driver usability in embedded application -Technique to achieve good real-time performance- Katsuya Matsubara Takanari Hayama Hitomi Takahashi Hisao Munakata IGEL Co., Ltd

More information

QEMU AS A USB MTP RESPONDER

QEMU AS A USB MTP RESPONDER QEMU AS A USB MTP RESPONDER Bandan Das KVM Forum 2016 1. 1 MULTIPLE WAYS TO SHARE FOLDERS, SUCH AS: Network based - NFS/Samba/SSHFS Device based Virtio - 9pfs, virtio-serial usb-mtp 2.

More information

Application Fault Tolerance Using Continuous Checkpoint/Restart

Application Fault Tolerance Using Continuous Checkpoint/Restart Application Fault Tolerance Using Continuous Checkpoint/Restart Tomoki Sekiyama Linux Technology Center Yokohama Research Laboratory Hitachi Ltd. Outline 1. Overview of Application Fault Tolerance and

More information

Multi-Process Systems: Memory (2) Memory & paging structures: free frames. Memory & paging structures. Physical memory

Multi-Process Systems: Memory (2) Memory & paging structures: free frames. Memory & paging structures. Physical memory Multi-Process Systems: Memory (2) What we will learn A detailed description of various ways of organizing memory Discuss various memory-management techniques, including paging and segmentation To provide

More information

Background. IBM sold expensive mainframes to large organizations. Monitor sits between one or more OSes and HW

Background. IBM sold expensive mainframes to large organizations. Monitor sits between one or more OSes and HW Virtual Machines Background IBM sold expensive mainframes to large organizations Some wanted to run different OSes at the same time (because applications were developed on old OSes) Solution: IBM developed

More information

CS 31: Intro to Systems Operating Systems Overview. Kevin Webb Swarthmore College November 8, 2018

CS 31: Intro to Systems Operating Systems Overview. Kevin Webb Swarthmore College November 8, 2018 CS 31: Intro to Systems Operating Systems Overview Kevin Webb Swarthmore College November 8, 2018 Reading Quiz Big Picture Goals is an extra code layer between user programs and hardware. Goal: Make life

More information

Scrivere device driver su Linux. Better Embedded 2012 Andrea Righi

Scrivere device driver su Linux. Better Embedded 2012 Andrea Righi Scrivere device driver su Linux Agenda Overview Kernel-space vs user-space programming Hello, world! kernel module Writing a character device driver Example(s) Q/A Overview What's a kernel? The kernel

More information

CPSC 822 MIDTERM EXAM, SPRING 2015

CPSC 822 MIDTERM EXAM, SPRING 2015 CPSC 822 MIDTERM EXAM, SPRING 2015 NAME: 1. (5) In our warm-up C code that was used to configure a NetApp file server,we see the line while(wait(&status)!=pid); The wait suspends us until we receive any

More information

Linux Device Drivers Interrupt Requests

Linux Device Drivers Interrupt Requests Overview 1 2 3 Installation of an interrupt handler Interface /proc 4 5 6 7 primitive devices can be managed only with I/O regions, most devices require a more complicated approach, devices cooperate with

More information

Spring 2017 :: CSE 506. Device Programming. Nima Honarmand

Spring 2017 :: CSE 506. Device Programming. Nima Honarmand Device Programming Nima Honarmand read/write interrupt read/write Spring 2017 :: CSE 506 Device Interface (Logical View) Device Interface Components: Device registers Device Memory DMA buffers Interrupt

More information

John A. Ronciak Staff Engineer NCG/NID/LAO Intel Corp.

John A. Ronciak Staff Engineer NCG/NID/LAO Intel Corp. John A. Ronciak Staff Engineer NCG/NID/LAO Corp. February 15-17, 17, 2000 Agenda l Learning the Cross Development Platform l Make the Device Driver IA-64 Clean l Building an IA-64 Linux Driver l Debugging

More information

The Embedded I/O Company TIP700-SW-82 Linux Device Driver User Manual TEWS TECHNOLOGIES GmbH TEWS TECHNOLOGIES LLC

The Embedded I/O Company TIP700-SW-82 Linux Device Driver User Manual TEWS TECHNOLOGIES GmbH TEWS TECHNOLOGIES LLC The Embedded I/O Company TIP700-SW-82 Linux Device Driver Digital Output 24V DC Version 1.2.x User Manual Issue 1.2.1 February 2009 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 Phone: +49 (0) 4101 4058 0 25469

More information

ECE 598 Advanced Operating Systems Lecture 10

ECE 598 Advanced Operating Systems Lecture 10 ECE 598 Advanced Operating Systems Lecture 10 Vince Weaver http://www.eece.maine.edu/~vweaver vincent.weaver@maine.edu 17 February 2015 Announcements Homework #1 and #2 grades, HW#3 Coming soon 1 Various

More information

Chapter 10: Case Studies. So what happens in a real operating system?

Chapter 10: Case Studies. So what happens in a real operating system? Chapter 10: Case Studies So what happens in a real operating system? Operating systems in the real world Studied mechanisms used by operating systems Processes & scheduling Memory management File systems

More information

NPTEL Course Jan K. Gopinath Indian Institute of Science

NPTEL Course Jan K. Gopinath Indian Institute of Science Storage Systems NPTEL Course Jan 2012 (Lecture 18) K. Gopinath Indian Institute of Science Spinlocks & Semaphores Shared data betw different parts of code in kernel most common: access to data structures

More information

Implementing DPDK based Application Container Framework with SPP YASUFUMI OGAWA, NTT

Implementing DPDK based Application Container Framework with SPP YASUFUMI OGAWA, NTT x Implementing DPDK based Application Container Framework with SPP YASUFUMI OGAWA, NTT Agenda Introduction of SPP SPP Container Containerize DPDK Apps SPP Container Tools Usecases Limitations and Restrictions

More information

disspcap Documentation

disspcap Documentation disspcap Documentation Release 0.0.1 Daniel Uhricek Dec 12, 2018 Installation 1 Requirements 3 1.1 Build depedencies............................................ 3 1.2 Python depedencies...........................................

More information

Important From Last Time

Important From Last Time Important From Last Time Embedded C Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Today Advanced C What C programs mean How to create C programs that mean nothing

More information

Networking in a Vertically Scaled World

Networking in a Vertically Scaled World Networking in a Vertically Scaled World David S. Miller Red Hat Inc. LinuxTAG, Berlin, 2008 OUTLINE NETWORK PRINCIPLES MICROPROCESSOR HISTORY IMPLICATIONS FOR NETWORKING LINUX KERNEL HORIZONTAL NETWORK

More information

Page 1. Today. Important From Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right?

Page 1. Today. Important From Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right? Important From Last Time Today Embedded C Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Advanced C What C programs mean How to create C programs that mean nothing

More information

A brief overview of DRM/KMS and its status in NetBSD

A brief overview of DRM/KMS and its status in NetBSD A brief overview of DRM/KMS and its status in NetBSD Taylor Riastradh Campbell campbell@mumble.net riastradh@netbsd.org AsiaBSDcon 2015 Tokyo, Japan March 13, 2015 No, not that DRM! DRM: Direct rendering

More information

XDP now with REDIRECT

XDP now with REDIRECT XDP - express Data Path XDP now with REDIRECT Jesper Dangaard Brouer, Principal Engineer, Red Hat Inc. LLC - Lund Linux Conf Sweden, Lund, May 2018 Intro: What is XDP? Really, don't everybody know what

More information

Filesystem. Disclaimer: some slides are adopted from book authors slides with permission 1

Filesystem. Disclaimer: some slides are adopted from book authors slides with permission 1 Filesystem Disclaimer: some slides are adopted from book authors slides with permission 1 Storage Subsystem in Linux OS Inode cache User Applications System call Interface Virtual File System (VFS) Filesystem

More information

Introduction to Operating Systems. Device Drivers. John Franco. Dept. of Electrical Engineering and Computing Systems University of Cincinnati

Introduction to Operating Systems. Device Drivers. John Franco. Dept. of Electrical Engineering and Computing Systems University of Cincinnati Introduction to Operating Systems Device Drivers John Franco Dept. of Electrical Engineering and Computing Systems University of Cincinnati Basic Computer Architecture CPU Main Memory System Bus Channel

More information

Introduction to Oracle VM (Xen) Networking

Introduction to Oracle VM (Xen) Networking Introduction to Oracle VM (Xen) Networking Dongli Zhang Oracle Asia Research and Development Centers (Beijing) dongli.zhang@oracle.com May 30, 2017 Dongli Zhang (Oracle) Introduction to Oracle VM (Xen)

More information

CSE 306/506 Operating Systems Process Address Space. YoungMin Kwon

CSE 306/506 Operating Systems Process Address Space. YoungMin Kwon CSE 306/506 Operating Systems Process Address Space YoungMin Kwon Process s Address Space Memory allocation for user processes On request, a right to use a new range of linear address is given to the process

More information

Xen Network I/O Performance Analysis and Opportunities for Improvement

Xen Network I/O Performance Analysis and Opportunities for Improvement Xen Network I/O Performance Analysis and Opportunities for Improvement J. Renato Santos G. (John) Janakiraman Yoshio Turner HP Labs Xen Summit April 17-18, 27 23 Hewlett-Packard Development Company, L.P.

More information

Raw Packet Capture in the Cloud: PF_RING and Network Namespaces. Alfredo

Raw Packet Capture in the Cloud: PF_RING and Network Namespaces. Alfredo Raw Packet Capture in the Cloud: PF_RING and Network Namespaces Alfredo Cardigliano cardigliano@ntop.org @acardigliano About ntop ntop develops high-performance network traffic monitoring technologies

More information

Buffer Management for XFS in Linux. William J. Earl SGI

Buffer Management for XFS in Linux. William J. Earl SGI Buffer Management for XFS in Linux William J. Earl SGI XFS Requirements for a Buffer Cache Delayed allocation of disk space for cached writes supports high write performance Delayed allocation main memory

More information

CARRIER-SW-82. Linux Device Driver. IPAC Carrier Version 2.2.x. User Manual. Issue November 2017

CARRIER-SW-82. Linux Device Driver. IPAC Carrier Version 2.2.x. User Manual. Issue November 2017 The Embedded I/O Company CARRIER-SW-82 Linux Device Driver IPAC Carrier Version 2.2.x User Manual Issue 2.2.0 November 2017 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek, Germany Phone: +49 (0)

More information

Computer Networks A Simple Network Analyzer Decoding Ethernet and IP headers

Computer Networks A Simple Network Analyzer Decoding Ethernet and IP headers Computer Networks A Simple Network Analyzer Decoding Ethernet and IP headers Objectives The main objective of this assignment is to gain an understanding of network activities and network packet formats

More information

BPF Hardware Offload Deep Dive

BPF Hardware Offload Deep Dive BPF Hardware Offload Deep Dive Jakub Kicinski 2018 NETRONOME SYSTEMS, INC. BPF Sandbox As a goal of BPF IR JITing of BPF IR to most RISC cores should be very easy BPF VM provides a simple and well understood

More information

Princeton University Computer Science 217: Introduction to Programming Systems. Dynamic Memory Management

Princeton University Computer Science 217: Introduction to Programming Systems. Dynamic Memory Management Princeton University Computer Science 217: Introduction to Programming Systems Dynamic Memory Management 1 Goals of this Lecture Help you learn about: The need for dynamic* memory mgmt (DMM) Implementing

More information

Chapter 4. File Systems. Part 1

Chapter 4. File Systems. Part 1 Chapter 4 File Systems Part 1 1 Reading Chapter 4: File Systems Chapter 10: Case Study 1: Linux (& Unix) 2 Long-Term Storage of Information Must store large amounts of data Information must survive the

More information

spwr_base & spwr_chan

spwr_base & spwr_chan DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA 95060 831-457-8891 Fax 831-457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 spwr_base & spwr_chan Linux Driver Documentation Manual Revision

More information

The Kernel Abstraction

The Kernel Abstraction The Kernel Abstraction Debugging as Engineering Much of your time in this course will be spent debugging In industry, 50% of software dev is debugging Even more for kernel development How do you reduce

More information

MIKELANGELO D3.3. Super KVM - Fast virtual I/O hypervisor. Shiqing Fan, Fang Chen Gabriel Scalosub, Niv Gilboa Justin Činkelj, Gregor Berginc

MIKELANGELO D3.3. Super KVM - Fast virtual I/O hypervisor. Shiqing Fan, Fang Chen Gabriel Scalosub, Niv Gilboa Justin Činkelj, Gregor Berginc MIKELANGELO D3.3 Super KVM - Fast virtual I/O hypervisor Workpackage 3 Hypervisor Implementation Author(s) Joel Nider, Kalman Meth IBM Shiqing Fan, Fang Chen Gabriel Scalosub, Niv Gilboa Justin Činkelj,

More information

Linux Device Drivers. 3. Char Drivers. 1. Introduction 2. Kernel Modules 3. Char Drivers 4. Advanced Char Drivers 5. Interrupts

Linux Device Drivers. 3. Char Drivers. 1. Introduction 2. Kernel Modules 3. Char Drivers 4. Advanced Char Drivers 5. Interrupts Linux Device Drivers Dr. Wolfgang Koch Friedrich Schiller University Jena Department of Mathematics and Computer Science Jena, Germany wolfgang.koch@uni-jena.de Linux Device Drivers 1. Introduction 2.

More information

Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016

Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016 Malloc Lab & Midterm Solutions Recitation 11: Tuesday: 11/08/2016 Malloc 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than

More information

My malloc: mylloc and mhysa. Johan Montelius HT2016

My malloc: mylloc and mhysa. Johan Montelius HT2016 1 Introduction My malloc: mylloc and mhysa Johan Montelius HT2016 So this is an experiment where we will implement our own malloc. We will not implement the world s fastest allocator, but it will work

More information

Operating Systems. Week 9 Recitation: Exam 2 Preview Review of Exam 2, Spring Paul Krzyzanowski. Rutgers University.

Operating Systems. Week 9 Recitation: Exam 2 Preview Review of Exam 2, Spring Paul Krzyzanowski. Rutgers University. Operating Systems Week 9 Recitation: Exam 2 Preview Review of Exam 2, Spring 2014 Paul Krzyzanowski Rutgers University Spring 2015 March 27, 2015 2015 Paul Krzyzanowski 1 Exam 2 2012 Question 2a One of

More information

Machine Problem 1: A Simple Memory Allocator

Machine Problem 1: A Simple Memory Allocator Machine Problem 1: A Simple Memory Allocator Introduction In this machine problem, you are to develop a simple memory allocator that implements the functions my malloc() and my free(), very similarly to

More information

File System Implementation

File System Implementation Introduction to Operating Systems File System Implementation John Franco Electrical Engineering and Computing Systems University of Cincinnati Layered File System Application Programs Logical File System

More information

Dissecting a 17-year-old kernel bug

Dissecting a 17-year-old kernel bug Dissecting a 17-year-old kernel bug Vitaly Nikolenko bevx 2018 - Hong Kong https://www.beyondsecurity.com/bevxcon/ Agenda Vulnerability analysis CVE-2018-6554^ - memory leak CVE-2018-6555^ - privilege

More information

Fosdem perf status on ARM and ARM64

Fosdem perf status on ARM and ARM64 Fosdem 2015 perf status on ARM and ARM64 jean.pihet@newoldbits.com 1 Contents Introduction Scope of the presentation Supported tools Call stack unwinding General Methods Corner cases ARM and ARM64 support

More information

TIP675-SW-82. Linux Device Driver. 48 TTL I/O Lines with Interrupts Version 1.2.x. User Manual. Issue November 2013

TIP675-SW-82. Linux Device Driver. 48 TTL I/O Lines with Interrupts Version 1.2.x. User Manual. Issue November 2013 The Embedded I/O Company TIP675-SW-82 Linux Device Driver 48 TTL I/O Lines with Interrupts Version 1.2.x User Manual Issue 1.2.5 November 2013 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek, Germany

More information

Chapter 10: I/O Subsystems (2)

Chapter 10: I/O Subsystems (2) ADRIAN PERRIG & TORSTEN HOEFLER ( 252-0062-00 ) Networks and Operating Systems Chapter 10: I/O Subsystems (2) BE CAREFUL WITH I/O DEVICES! Our Small Quiz True or false (raise hand) Open files are part

More information

Laboratory Assignment #3. Extending scull, a char pseudo-device. Summary: Objectives: Tasks:

Laboratory Assignment #3. Extending scull, a char pseudo-device. Summary: Objectives: Tasks: Laboratory Assignment #3 Extending scull, a char pseudo-device Value: (See the Grading section of the Syllabus.) Due Date and Time: (See the Course Calendar.) Summary: This is your first exercise that

More information

LinuxCon 2010 Tracing Mini-Summit

LinuxCon 2010 Tracing Mini-Summit LinuxCon 2010 Tracing Mini-Summit A new unified Lockless Ring Buffer library for efficient kernel tracing Presentation at: http://www.efficios.com/linuxcon2010-tracingsummit E-mail: mathieu.desnoyers@efficios.com

More information