2011-01-01から1年間の記事一覧

Asynchronous page fault解析

はじめに Linux-2.6.38でマージされたAsynchronous page fault(非同期ページフォールト、以降APFと略す)について調べてみました。(追記:ゲストのプロセス切り替え可能判定の間違いを修正しました。) Asynchronous page faultとは? 近代的なOSでは、ページ…

qemuのtrace機能

はじめに qemuには内部の処理をtraceするための機能があります。この機能を使うとprintfのように簡単でprintfより軽量なデバッグ出力を追加することができます。 まとめ 用途はデバッグ(printfの代わり) コンパイル時に機能をon/off指定する必要がある 普通…

VM間共有メモリivshmemを試してみる

はじめに qemu(-kvm)にはVM間共有メモリ(Inter-VM shared memory: ivshmem)という機能があります。名前のとおりVM間の共有メモリを実現する機能です。今回はこの機能を体験することが目的です。内部動作解析などは行なっていません。 How does ivshmem work?…

仮想マシンとBIOSと準仮想化

はじめに PCエミュレータや完全仮想化の仮想マシンの場合は、当然ながらBIOS(もしくはEFI)をエミュレーションする必要があります。BIOSが用意しなければならない情報には、例えばNUMAにおけるCPUやメモリの構成情報があります*1。物理マシンの場合は、基本的…

Rootfs over Virtfsでゲストを起動する

はじめに Virtfsを使うと、ホストのディレクトリをゲストにmountさせることができます。ここではdebootstrap等でホストに用意したrootfsを使ってゲストをブートさせる方法について説明します。 What's Virtfs? Virtfsは、"File system pass-through/Paravirt…

mmapとページフォールト

はじめに メモリ管理周りで勘違いしていた部分をコードを追いながら説明してみます。 概要 Q1: qemuはゲストメモリ領域をmmap(2)してるんだよね?A1: してますがコードには呼び出し箇所はありません*1。mmapはposix_memalign(3)内で呼び出されます。Q2: ゲス…