From: Roger Pau Monne Date: Wed, 27 Jan 2016 15:16:17 +0000 (+0000) Subject: Initial commit X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=HEAD;p=people%2Froyger%2Ffosdem2016.git Initial commit Add FreeBSD slides. --- 6206a7d8635050bab8bc2105aa9908b36f2af442 diff --git a/kvm_arch.pdf b/kvm_arch.pdf new file mode 100644 index 0000000..b1443aa Binary files /dev/null and b/kvm_arch.pdf differ diff --git a/talk.pdf b/talk.pdf new file mode 100644 index 0000000..aecaada Binary files /dev/null and b/talk.pdf differ diff --git a/talk.tex b/talk.tex new file mode 100644 index 0000000..9df1801 --- /dev/null +++ b/talk.tex @@ -0,0 +1,249 @@ +\documentclass[handout]{beamer} +\usepackage[utf8]{inputenc} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{caption} +\usepackage{textpos} +%\usepackage{booktabs}% http://ctan.org/pkg/booktabs +\usepackage{xparse}% http://ctan.org/pkg/xparse +\usepackage{array} +\usepackage{tabu} +\usepackage{color,colortbl} +\usepackage{hhline} +\usepackage{hyperref} +%\usepackage{color} +%\usepackage[table]{xcolor} + +% Rotation: \rot[][]{} +\NewDocumentCommand{\rot}{O{45} O{1em} m}{\makebox[#2][l]{\rotatebox{#1}{#3}}} +\newcommand{\specialcell}[2][c]{% + \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}} + +\newcommand{\brev}[1]{\href{https://svnweb.freebsd.org/changeset/base/#1}{r#1}} +\newcommand{\prev}[1]{\href{https://svnweb.freebsd.org/changeset/ports/#1}{r#1}} + +\let\Tiny=\tiny +\usepackage{theme/xentalk} + +\setbeameroption{hide notes} +%\setbeameroption{show notes} +\setbeamerfont{note page}{size=\scriptsize} +% Class options include: notes, notesonly, handout, trans, +% hidesubsections, shadesubsections, +% inrow, blue, red, grey, brown +\author[Wei Liu and Roger Pau]{Wei Liu {\small wei.liu2@citrix.com}\\Roger Pau Monné {\small roger.pau@citrix.com}} +\title{FreeBSD/Xen update} +\date{Brussels -- 31st of January, 2016} + +\begin{document} { +\setbeamertemplate{footline}{} +\setbeamertemplate{headline}{} + +% Title Frame +\begin{frame} + \begin{textblock*}{100mm}(.92\textwidth,8cm) + \includegraphics[height=0.6cm]{theme/xen_project_logo.png} + \end{textblock*} + %\begin{textblock*}{100mm}(0.73\textwidth,3.4cm) + % \includegraphics[height=4.5cm]{daemon_hammer.jpg} + %\end{textblock*} + \titlepage +\end{frame} +\note{Welcome}} + +\section{Xen Architecture} + +\subsection{arch} + +\begin{frame} + \frametitle{Xen Architecture (type-1 hypervisor)} + \begin{center} + \includegraphics[width=0.66\textwidth]{xen_arch.pdf} + \end{center} +\end{frame} +\note{ + \begin{itemize} + \item Type 1 Hypervisor with a twist + \item Xen run on bare metal, and only has the MMU, IOMMU and scheduler + \item Device drivers are provided by the control domain + \item Allows to reuse device drivers already present in OSes + \item Control domain can only be Linux or NetBSD (requires PV guest) + \item PV guests also can only be NetBSD, or Linux + \item HVM guests can be any OS (Windows, OpenBSD...) + \item Now we are going to see all this kinds of guests in more detail + \end{itemize} +} + +\begin{frame} + \frametitle{Type-2 hypervisor architecture} + \begin{center} + \includegraphics[width=0.77\textwidth]{kvm_arch.pdf} + \end{center} +\end{frame} +\note{ + \begin{itemize} + \item none + \end{itemize} +} + +\begin{frame} + \frametitle{Xen architecture in detail} + \begin{center} + \includegraphics[width=0.87\textwidth]{xen_arch_ex.pdf} + \end{center} +\end{frame} +\note{ + \begin{itemize} + \item none + \end{itemize} +} + +\section{News from FreeBSD} + +\subsection{fbsd_up} + +\begin{frame} + \frametitle{xen-block related improvements} + \begin{itemize} + \item Remove broken block protocol extensions (\brev{284296}). + \item Unmapped IO support for blkfront (\brev{290611}). + \item Indirect descriptors support, by Colin Percival (\brev{286062}). + \end{itemize} +\end{frame} +\note{ + \begin{itemize} + % broken block-extension. + \item Prevented FreeBSD 32bit guests from working on a FreeBSD 64bit Dom0. + \item Allows cleanup of public block headers which had pollution from this FreeBSD specific extension. + % Unammped IO. + \item Unmapped IO support for blkfront required changes to busdma, that's why it was not done earlier. + \item With unmapped IO we should prevent TLB flushes, which cause delays on big systems since each vCPU needs to be woken up in order to perform the flush. + % Indirect descriptors + \item Allow increasing the request size from 44KB to 2MB. + \item From FreeBSD's point of view, it allows increasing the request size to 128KB (MAXPHYS). + \end{itemize} +} + +\begin{frame} + \frametitle{Dom0 improvements} + \begin{itemize} + \item Multiple fixes for the multiboot support in the loader (\brev{277291}, \brev{277418}, \brev{280953}, \brev{280954}). + \item Improved PIRQ handling (\brev{278854}, \brev{278855}). + \item Indirect descriptors support, by Colin Percival (\brev{286062}). + \item Improvements to foreign memory mapping (\brev{282634}). + \item Added save, restore and live migration support to the Xen package (\prev{398918}). + \end{itemize} +\end{frame} +\note{ + \begin{itemize} + % multiboot. + \item Should make the multiboot-loader much resistant to errors and should run on all hardware. + % PIRQ. + \item Differentiate between edge and level PIRQS. + \item Pre-register legacy IRQs (<16). + % Foreign memory + \item Make sure that where foreign memory is mapped doesn't clash with a MMIO region. + \end{itemize} +} + +\begin{frame} + \frametitle{EC2 specific improvements} + \begin{itemize} + \item Allow creating EC2 AMIs from the FreeBSD build system (\brev{280928}) by Colin Percival. + \item Support for SR-IOV (A.K.A EC2 Enhanced Networking) for FreeBSD guests. + \end{itemize} +\end{frame} +\note{ + \begin{itemize} + % EC2 images. + \item Provides and easy way to build images and customize them. + % SR-IOV. + \item Allow pci passthrough of virtual functions of a PCIe card. From a guest PoV it's like a physical network adaptor, although the underlying hw is shared with other guests. Should provide the fastest networking possible. + \end{itemize} +} + +\begin{frame} + \frametitle{Generic fixes and improvements} + \begin{itemize} + \item Xenstore device fixes (\brev{278844}). + \item Add a handler for the debug interrupt (\brev{280838}). + \item Update Xen headers to 4.6, previous version was 4.2 (\brev{288917}) by Julien Grall. + \item Cleanup and unification of Xen files (\brev{289685}, \brev{289686}) by Julien Grall. + \item New PV console driver (\brev{289033}) by Julien Grall. + \item Add run-time options to disable PV devices (\brev{286999}). + \item Removal of the i386 UP PV port (\brev{282274}) by John Baldwin. + \end{itemize} +\end{frame} +\note{ + \begin{itemize} + % Xenstore. + \item Allow multiple concurrent clients. + \item Free client data on close. + % Debug interrupt. + \item Xen can send a debug signal to a guest, which should trigger a stack-trce print on the Xen console. This is useful for developers as well a troubleshooting user issues. + % Headers + \item New headers are required in order to use new features found on newer Xen versions. + \item The cleanup allowed to unify a lot of the i386/amd64 headers, and to remove some leftovers from the i386 PV port. + % Console + \item Complete re-write of the Xen console driver, previous code was very buggy and tended to write past the end of the shared ring, causing memory corruption and page faults. + % Disable PV drivers + \item Under some circumstances certain PV drivers didn't work as expected (PV nic + pf), so an option has been provided in order to switch back to FreeBSD using the emulated devices. This is a run-time option that can be changed from loader.conf. + % PV port + \item The i386 Xen PV port was limited to a single vCPU, had bugs and was unmaintained. + \item The removal allows to cleanup both the i386 generic code and the Xen code and drivers, by completely removing any PV leftovers from FreeBSD source code. + \end{itemize} +} + +\begin{frame} + \frametitle{xen-net related improvements} + \begin{itemize} + \item Fix initial ARP sending on restore from migration (\brev{282908}). + \item Preserve configured options across migrations (\brev{285098}). + \end{itemize} +\end{frame} +\note{ + \begin{itemize} + % ARP. + \item It is important to send an ARP on restore from migration so the bridge can notice that a new MAC has been added. + \item FreeBSD used to send the ARP before waiting for the nic to become connected. + % Options. + \item Preserve user-selected nic options (TSO, LRO...) when possible across migrations. + \end{itemize} +} + +\section{Live demo} + +\subsection{live} + +\begin{frame} + \frametitle{Live demo} + \begin{itemize} + \item Live demo of save/restore/live migration of a FreeBSD guest on a FreeBSD Dom0. + \end{itemize} +\end{frame} +\note{ + \begin{itemize} + \item Should we do it? Is there anything else that we can demo? + \end{itemize} +} + +\section{Q\&A} + +\subsection{QA} + +\begin{frame} + \frametitle{Q\&A} + + \centering + {\huge + Thanks\\ + \vspace{1em} + Questions?}\\ + \vspace{2em} + +\end{frame} +\note{ + +} + +\end{document} diff --git a/theme/panda.png b/theme/panda.png new file mode 100644 index 0000000..b82fa5e Binary files /dev/null and b/theme/panda.png differ diff --git a/theme/panda_sit.png b/theme/panda_sit.png new file mode 100644 index 0000000..fae02f9 Binary files /dev/null and b/theme/panda_sit.png differ diff --git a/theme/xen_org.png b/theme/xen_org.png new file mode 100644 index 0000000..f5f8001 Binary files /dev/null and b/theme/xen_org.png differ diff --git a/theme/xen_project_logo.png b/theme/xen_project_logo.png new file mode 100644 index 0000000..eebdb95 Binary files /dev/null and b/theme/xen_project_logo.png differ diff --git a/theme/xen_project_logo_1.jpg b/theme/xen_project_logo_1.jpg new file mode 100644 index 0000000..98b8442 Binary files /dev/null and b/theme/xen_project_logo_1.jpg differ diff --git a/theme/xentalk.sty b/theme/xentalk.sty new file mode 100644 index 0000000..7cd1f23 --- /dev/null +++ b/theme/xentalk.sty @@ -0,0 +1,48 @@ +%\definecolor{colorlogo}{RGB}{46,124,173} +\definecolor{colorlogo}{RGB}{45,86,132} + +\mode + +\usecolortheme{whale} +\useoutertheme[subsection=false, footline=authortitle]{miniframes} +%\expandafter\def\expandafter\insertshorttitle\expandafter{% +% \insertshorttitle\hfill% +% \insertframenumber\,/\,\inserttotalframenumber} +\setbeamercolor{frametitle}{bg=colorlogo} +\setbeamercolor{title}{bg=colorlogo} +\setbeamercolor{structure}{fg=black} +\setbeamercolor{itemize item}{fg=colorlogo} +\setbeamercolor{block body example}{bg=normal text.bg!90!black} +\setbeamercolor{block title example}{use={normal text,example text},fg=white,bg=colorlogo} +\setbeamercolor{meu}{fg=white, bg=colorlogo} +\defbeamertemplate*{footline}{split theme} +{% + \leavevmode% + \hbox{\hfill + \begin{beamercolorbox}[wd=.3\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fil,rightskip=.3cm,center]{meu}% + \usebeamerfont{title in head/foot}\insertdate + \end{beamercolorbox}}\hfill + \begin{beamercolorbox}[wd=.6\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fil,rightskip=.3cm plus1fil,center]{title in head/foot}% + \usebeamerfont{title in head/foot}\insertshorttitle% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.1\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil,center]{meu}% + \usebeamerfont{author in head/foot}\insertframenumber\,/\,\inserttotalframenumber\hfill%\insertshortauthor + \end{beamercolorbox}% + \vskip0pt% +} + +\titlegraphic{ + \includegraphics[height=3.7cm]{theme/panda_sit.png} +} + +\addtobeamertemplate{frametitle}{}{% + \begin{textblock*}{100mm}(.92\textwidth,7cm) + \includegraphics[height=0.6cm]{theme/xen_project_logo.png} + \end{textblock*} + \begin{textblock*}{100mm}(.85\textwidth,-0.9cm) + \includegraphics[height=2.2cm]{theme/panda.png} + \end{textblock*} +} + +\mode + \ No newline at end of file diff --git a/xen_arch.pdf b/xen_arch.pdf new file mode 100644 index 0000000..f6fa587 Binary files /dev/null and b/xen_arch.pdf differ diff --git a/xen_arch.svg b/xen_arch.svg new file mode 100644 index 0000000..668d9a9 --- /dev/null +++ b/xen_arch.svg @@ -0,0 +1,374 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + Maquinari + + + CPU + + + + MMU + + + + ... + + + + + Xen + + + + syslog + + + + xterm + + + + xorg + + + + ... + + + + MàquinaVirtual 1 + + + + Domini decontrol + Linux, FreeBSDo NetBSD + + + + MàquinaVirtual 2 + + + diff --git a/xen_arch_ex.pdf b/xen_arch_ex.pdf new file mode 100644 index 0000000..cbd7f2c Binary files /dev/null and b/xen_arch_ex.pdf differ diff --git a/xen_arch_ex.svg b/xen_arch_ex.svg new file mode 100644 index 0000000..d8a748a --- /dev/null +++ b/xen_arch_ex.svg @@ -0,0 +1,786 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + Hardware + + + CPU + + + + MMU + + + + ... + + + + + + Xen + + + + Control Domain (VM0) + + kernel + user-space + + + + VM1 + + + + VM2 + + + + xenconsoled + + Part of the Xen package + + Part of FreeBSD + + + + blkback + + + + netback + + + + blkfront + + + + xl (toolstack) + + + + xenstored + + + + QEMU + + + + + + netfront + + + + privcmd dev + + + + evtchn dev + + evtchn dev + + + + evtchn dev + + xenstore dev + + + + VMN + + + +