<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://d.ballade.jp/blog/">
<title>hasegaw blog</title>
<link>http://d.ballade.jp/blog/</link>
<description>仕事中いつも上の空な窓際社畜犬による、コンピュータ関連のブログ。

主なトピックはLinux, 仮想化技術, Perlなど。
また15年のWindows(+PC UNIX)ユーザな私でしたが、Mac OS X環境(MacBook)へのマイグレーションもレポートします。</description>
<dc:language>ja-JP</dc:language>
<dc:creator></dc:creator>
<dc:date>2012-02-20T02:24:29+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.typepad.com/" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://d.ballade.jp/blog/2012/02/doesstripingboo.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2012/02/post-1091.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2012/01/post-c6be.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2012/01/selectingcontro.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2012/01/freebsdlinux-kv.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2011/06/post-ca66.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2011/05/ssmjp_pmtalk.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2011/05/osol201105.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2011/05/qpstudy06.html" />
<rdf:li rdf:resource="http://d.ballade.jp/blog/2011/04/xen-meets-virti.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://d.ballade.jp/blog/2012/02/doesstripingboo.html">
<title>フラッシュメモリのストライピングは善か悪か？</title>
<link>http://d.ballade.jp/blog/2012/02/doesstripingboo.html</link>
<description>SSDなど、フラッシュメモリを用いたストレージデバイスは非常に高速です。このよう...</description>
<content:encoded>&lt;p&gt;SSDなど、フラッシュメモリを用いたストレージデバイスは非常に高速です。このようなデバイスをストライピングするとさらに上を目指せる、、、ように感じられますが、実はストライピングで常にアプリケーションの性能が上がるわけではありません。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;デバイス単体、２台ストライプのレイテンシ特性&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;以下のグラフは、フラッシュメモリデバイスへのランダム4KB書き込み時のレイテンシ分布（ドライブ単体および２台をストライプ）を示したものです。&lt;/p&gt;

&lt;p&gt;グラフ１&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://d.ballade.jp/.shared/image.html?/photos/uncategorized/2012/02/20/screen_shot_20120220_at_15557.png&quot; class=&quot;mb&quot;&gt;&lt;img width=&quot;350&quot; height=&quot;215&quot; border=&quot;0&quot; alt=&quot;Screen_shot_20120220_at_15557&quot; title=&quot;Screen_shot_20120220_at_15557&quot; src=&quot;http://d.ballade.jp/blog/images/2012/02/20/screen_shot_20120220_at_15557.png&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;左側がいちばんレイテンシが低い状態、右にいけばいくほどレンテンシが増えていった状態を示していおり、線が左に寄っているのは、すなわち高速に応答していることを示しています。&lt;/p&gt;

&lt;p&gt;デバイス単体の場合（赤）、レイテンシ分布は非常に高速な状態（１）に偏っており良好な状態です。ストライプした場合（青）、先と比べると（２）の値が高くなっていて、つまりレイテンシが大きくなっていると言うことになります。この状態であれば間違いなく赤、つまりデバイス単体の性能のほうが応答が早いことになります。&lt;/p&gt;

&lt;p&gt;この結果ですが、すこし条件を変えて測定してみると —— 以下のようになります。&lt;/p&gt;

&lt;p&gt;グラフ２&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://d.ballade.jp/.shared/image.html?/photos/uncategorized/2012/02/20/screen_shot_20120220_at_15607.png&quot; class=&quot;mb&quot;&gt;&lt;img width=&quot;350&quot; height=&quot;210&quot; border=&quot;0&quot; alt=&quot;Screen_shot_20120220_at_15607&quot; title=&quot;Screen_shot_20120220_at_15607&quot; src=&quot;http://d.ballade.jp/blog/images/2012/02/20/screen_shot_20120220_at_15607.png&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;このグラフでは、ストライプ構成（青）のほうがデバイス単体（赤）よりよいレイテンシ性能を示しています。&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;条件の違いは？&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;この先の２つのグラフ、一体何を変えたと思いますか？　　答えはI/Oスレッド数です。&lt;/p&gt;

&lt;p&gt;グラフ１ …… 1スレッド&lt;br /&gt;グラフ２ …… 64スレッド&lt;/p&gt;

&lt;p&gt;つまりグラフ１の場合よりグラフ２の場合のほうが大きなワークロードがかかっています。つまりワークロード次第でレイテンシ分布は変化します。&lt;/p&gt;

&lt;p&gt;さて。&lt;br /&gt;デバイス単体で使ったほうがお得でしょうか？&lt;br /&gt;それとも、ストライピングしておいたほうがお得でしょうか？&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;ヒント&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;複数デバイスにストライプすると、各デバイスからの応答を待ち合わせる必要があるため、レイテンシが幾らか悪化する。&lt;/li&gt;

&lt;li&gt;転送するデータのサイズに比例して、フラッシュメモリのレイテンシは変化する。&lt;/li&gt;&lt;/ul&gt;</content:encoded>


<dc:subject>フラッシュメモリ</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2012-02-20T02:24:29+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2012/02/post-1091.html">
<title>フラッシュメモリデバイスのレイテンシ差がアプリケーションに与える影響</title>
<link>http://d.ballade.jp/blog/2012/02/post-1091.html</link>
<description>たまにはブログを書こうかと。今日はこのブログではじめてフラッシュメモリの話題を扱...</description>
<content:encoded>&lt;p&gt;たまにはブログを書こうかと。今日はこのブログではじめてフラッシュメモリの話題を扱うことにしましょう。&lt;/p&gt;

&lt;p&gt;個人的に大好きなプレゼンテーションがあります。タイトルは &lt;a href=&quot;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2011/20110810_Keynote5_Nesheim.pdf&quot;&gt;Mythbusting Flash Performance&lt;/a&gt; 、元Sun（現Oracle）の Solaris プラットフォーム エンジニアリングのバイスプレジデント Bill Neshim 氏が Flash Memory Summit 2011 のキーノートとして講演した際のスライドのようです。&lt;/p&gt;

&lt;p&gt;このプレゼンテーションには衝撃的なグラフが入っていて、これを見たとき衝撃を受けました。それ以来このプレゼンテーションはお気に入りとして常にマシンの中に入っています:)&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;予期可能なレイテンシ性能のフラッシュメモリデバイス、そうでないフラッシュメモリデバイス&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;フラッシュメモリデバイスは、使用されているNANDフラッシュメモリのパッケージごとの性能もありますが、それを管理・制御するコントローラにより、最終的なデバイスの仕上がりが大きく変わることが知られています。&lt;/p&gt;

&lt;p&gt;フラッシュメモリデバイスの性能は IOPS (単位時間あたりのIO回数)と帯域幅で語られがちですが、さらにレイテンシという軸で探ってみると、デバイスの本当の性能がよく見えてきます。&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;IOPSの比較&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;以下は、先のプレゼンテーションからの引用です。具体的なデバイスの機種名は明かされていませんが、2つのフラッシュメモリデバイスのIOPS性能を比較しています。&lt;/p&gt;

&lt;p&gt;Device A&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;mb&quot; href=&quot;http://d.ballade.jp/.shared/image.html?/photos/uncategorized/2012/02/19/screen_shot_20120219_at_13550_2.png&quot;&gt;&lt;img width=&quot;540&quot; height=&quot;337&quot; border=&quot;0&quot; src=&quot;http://d.ballade.jp/blog/images/2012/02/19/screen_shot_20120219_at_13550_2.png&quot; title=&quot;Screen_shot_20120219_at_13550_2&quot; alt=&quot;Screen_shot_20120219_at_13550_2&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Device B&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;mb&quot; href=&quot;http://d.ballade.jp/.shared/image.html?/photos/uncategorized/2012/02/19/screen_shot_20120219_at_13555_2.png&quot;&gt;&lt;img width=&quot;540&quot; height=&quot;337&quot; border=&quot;0&quot; src=&quot;http://d.ballade.jp/blog/images/2012/02/19/screen_shot_20120219_at_13555_2.png&quot; title=&quot;Screen_shot_20120219_at_13555_2&quot; alt=&quot;Screen_shot_20120219_at_13555_2&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;このふたつの違いは明白です。前者は書き込みスレッド数により IOPS 性能が決まってくる、つまり性能が予期できることがわかります。後者は、もちろんスレッド数が少ない方がIOPS数が多いもののおよそランダムな状態です。これが、性能が予期できないフラッシュメモリデバイスの特性です。&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;レイテンシの比較&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;続いて、次のスライドは2つのデバイスのレイテンシ性能を比較しています。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;mb&quot; href=&quot;http://d.ballade.jp/.shared/image.html?/photos/uncategorized/2012/02/19/screen_shot_20120219_at_13611_2.png&quot;&gt;&lt;img width=&quot;540&quot; height=&quot;337&quot; border=&quot;0&quot; src=&quot;http://d.ballade.jp/blog/images/2012/02/19/screen_shot_20120219_at_13611_2.png&quot; title=&quot;Screen_shot_20120219_at_13611_2&quot; alt=&quot;Screen_shot_20120219_at_13611_2&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;縦軸は頻度、横軸はIO時に発生したレイテンシの大きさです。つまりグラフが左側に寄っていればそれだけ応答が速いデバイスである、と見ることができます。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;このグラフで登場している2つのデバイスは、実際に Oracle の本番環境で利用されており、非常にレイテンシ特性が似ています。しかし、 OLTP ワークロードをかけた際のグラフを見ると、 Dev1 はレイテンシが大きくなる頻度が Dev2 より大きい —— つまり、実際のアプリケーション負荷をかけるとレイテンシがより悪化するデバイスである、ということです。&lt;/p&gt;

&lt;p&gt;これについて Bill 氏は「I/Oのうち最も遅い 1% がデバイスの性能を決める。しかし、多くのデバイスベンダはこの部分の軽く見がちだ」と述べています。&lt;/p&gt;

&lt;p&gt;どうして氏が 1% に拘るのか……それは次のスライドに答えがあります。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;mb&quot; href=&quot;http://d.ballade.jp/.shared/image.html?/photos/uncategorized/2012/02/19/screen_shot_20120219_at_13613_2.png&quot;&gt;&lt;img width=&quot;540&quot; height=&quot;337&quot; border=&quot;0&quot; src=&quot;http://d.ballade.jp/blog/images/2012/02/19/screen_shot_20120219_at_13613_2.png&quot; title=&quot;Screen_shot_20120219_at_13613_2&quot; alt=&quot;Screen_shot_20120219_at_13613_2&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;このスライドは、さきほどの「最も遅い1%」が データベースの OLTP に性能にどのような影響をもたらすかを示しています。縦軸はデバイスのレスポンスタイムタイム、横軸は時間です。このグラフでは、 Dev 2 が非常に安定したレスポンスタイムで応答しているのに対し Dev 1 のレスポンスタイムは明らかにムラがあります。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Dev 2 を使ったデータベースでは一定の間隔で応答してきますが、 Dev 1 は、まるで混雑した道路で渋滞にハマっているかのように動いたり止まったり……を繰り返しているのです。この結果、データベースの実行速度には大きな差が現れるのです。&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-size: 1.2em;&quot;&gt;まとめ&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;フラッシュメモリデバイスの性能は IOPS (単位時間あたりのIO回数)と帯域幅で語られがちです。しかし、それだけでなく、レイテンシが安定しているか、という観点での評価もとても重要です。それも一定時間の平均値ではなく、レスポンスタイムの分布まで含めてはじめて、アプリケーション性能への影響がわかります。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;p.s. @yoshikaw さんにエントリ中のバグをご指摘いただき修正しました。ありがとうございます！&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</content:encoded>


<dc:subject>フラッシュメモリ</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2012-02-19T02:14:53+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2012/01/post-c6be.html">
<title>変なファイル名によるイタズラ</title>
<link>http://d.ballade.jp/blog/2012/01/post-c6be.html</link>
<description>へぇぇぇぇ。 [sandbox@proliant2 work]$ touch -...</description>
<content:encoded>&lt;p&gt;へぇぇぇぇ。&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;[sandbox@proliant2 work]$ touch -- &#39;-rf&#39; &#39;~&#39;&lt;br /&gt;[sandbox@proliant2 work]$ strace rm *&lt;br /&gt;execve(&amp;quot;/bin/rm&amp;quot;, [&amp;quot;rm&amp;quot;, &amp;quot;-rf&amp;quot;, &amp;quot;~&amp;quot;], [/* 23 vars */]) = 0&lt;br /&gt;brk(0)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; = 0x87c000&lt;br /&gt;mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f840a966000&lt;br /&gt;access(&amp;quot;/etc/ld.so.preload&amp;quot;, R_OK)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= -1 ENOENT (No such file or directory)&lt;br /&gt;open(&amp;quot;/etc/ld.so.cache&amp;quot;, O_RDONLY)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= 3&lt;br /&gt;fstat(3, {st_mode=S_IFREG|0644, st_size=94094, ...}) = 0&lt;br /&gt;mmap(NULL, 94094, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f840a94f000&lt;br /&gt;close(3)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;open(&amp;quot;/lib64/libc.so.6&amp;quot;, O_RDONLY)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= 3&lt;br /&gt;read(3, &amp;quot;\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0&amp;gt;\0\1\0\0\0\220\357\1n?\0\0\0&amp;quot;..., 832) = 832&lt;br /&gt;fstat(3, {st_mode=S_IFREG|0755, st_size=1995840, ...}) = 0&lt;br /&gt;mmap(0x3f6e000000, 3814616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3f6e000000&lt;br /&gt;mprotect(0x3f6e19a000, 2093056, PROT_NONE) = 0&lt;br /&gt;mmap(0x3f6e399000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x199000) = 0x3f6e399000&lt;br /&gt;mmap(0x3f6e39e000, 21720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3f6e39e000&lt;br /&gt;close(3)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f840a94e000&lt;br /&gt;mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f840a94c000&lt;br /&gt;arch_prctl(ARCH_SET_FS, 0x7f840a94c720) = 0&lt;br /&gt;mprotect(0x3f6e399000, 16384, PROT_READ) = 0&lt;br /&gt;mprotect(0x3f6de20000, 4096, PROT_READ) = 0&lt;br /&gt;munmap(0x7f840a94f000, 94094)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;brk(0)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; = 0x87c000&lt;br /&gt;brk(0x89d000)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= 0x89d000&lt;br /&gt;brk(0)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; = 0x89d000&lt;br /&gt;open(&amp;quot;/usr/lib/locale/locale-archive&amp;quot;, O_RDONLY) = 3&lt;br /&gt;fstat(3, {st_mode=S_IFREG|0644, st_size=99154656, ...}) = 0&lt;br /&gt;mmap(NULL, 99154656, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8404abc000&lt;br /&gt;close(3)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B9600 opost isig icanon echo ...}) = 0&lt;br /&gt;lstat(&amp;quot;/&amp;quot;, {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0&lt;br /&gt;newfstatat(AT_FDCWD, &amp;quot;~&amp;quot;, {st_mode=S_IFREG|0664, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0&lt;br /&gt;unlinkat(AT_FDCWD, &amp;quot;~&amp;quot;, 0)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;close(0)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;close(1)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;close(2)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; = 0&lt;br /&gt;exit_group(0)&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= ?&lt;br /&gt;[sandbox@proliant2 work]$&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;シェルによりワイルドカード指定で見つかったファイルの ~ カレントディレクトリパスに置き換えられないため問題ないのね。&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&lt;span style=&quot;font-family: &#39;ＭＳ Ｐゴシック&#39;,&#39;ヒラギノ角ゴ Pro W3&#39;,&#39;Osaka&#39;,&#39;ＭＳ Ｐ明朝&#39;,&#39;ヒラギノ明朝 Pro W3&#39;,&#39;Trebuchet MS&#39;,Trebuchet,verdana,arial,sans-serif;&quot;&gt;しかし意図的にファイルを置いておくことで -i を迂回できるね。怖い……！&lt;/span&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&lt;span style=&quot;font-family: &#39;ＭＳ Ｐゴシック&#39;,&#39;ヒラギノ角ゴ Pro W3&#39;,&#39;Osaka&#39;,&#39;ＭＳ Ｐ明朝&#39;,&#39;ヒラギノ明朝 Pro W3&#39;,&#39;Trebuchet MS&#39;,Trebuchet,verdana,arial,sans-serif;&quot;&gt;※Fedora 14 の環境でためしました。&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/p&gt;</content:encoded>



<dc:creator>hasegaw</dc:creator>
<dc:date>2012-01-12T22:38:08+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2012/01/selectingcontro.html">
<title>Tabキーでウインドウ上のボタンにフォーカスをあてるには</title>
<link>http://d.ballade.jp/blog/2012/01/selectingcontro.html</link>
<description>「えっ、いまさら？」と言われそうなネタで自分への備忘録がてら一本。。。。 Mac...</description>
<content:encoded>&lt;p&gt;「えっ、いまさら？」と言われそうなネタで自分への備忘録がてら一本。。。。&lt;/p&gt;

&lt;p&gt;MacOS XのUIでボタンなどをフォーカスしたいときに Tab キーで反応してくれないのに割と困っていたんですが、設定ひとつで挙動が変えられるんですね。感動しました。。。。&lt;/p&gt;

&lt;p&gt;たとえば次のウインドウの場合、このダイアログにはチェックボックスとボタン２つ、合計３つのコントロールがあります。 Windows であれば標準設定でもこの３コントロール間を Tab で行き来できるのですが、 Mac OS X ではデフォルトでは Tab によるコントロール移動が効きません。なおこの画像は実際に Cancel にフォーカスをあてている状態です。&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://d.ballade.jp/photos/uncategorized/2012/01/10/screen_shot_20120110_at_03206.png&quot;&gt;&lt;img border=&quot;0&quot; class=&quot;image-full&quot; alt=&quot;Screen_shot_20120110_at_03206&quot; title=&quot;Screen_shot_20120110_at_03206&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2012/01/10/screen_shot_20120110_at_03206.png&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;これは、設定＞キーボードで変更できます。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://d.ballade.jp/photos/uncategorized/2012/01/10/keyboard_setting.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2012/01/10/keyboard_setting.png&quot; title=&quot;Keyboard_setting&quot; alt=&quot;Keyboard_setting&quot; class=&quot;image-full&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/#!/akisutesama/status/156392408194617344&quot;&gt;教えて&lt;/a&gt;くださった &lt;a href=&quot;http://twitter.com/akisutesama/&quot;&gt;@akisutesama&lt;/a&gt; さん、ありがとうございます _o_&lt;/p&gt;</content:encoded>


<dc:subject>Mac</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2012-01-10T00:36:28+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2012/01/freebsdlinux-kv.html">
<title>FreeBSDで使うLinux KVM準仮想化タイマ</title>
<link>http://d.ballade.jp/blog/2012/01/freebsdlinux-kv.html</link>
<description>こんにちわ。@hasegawです。あけましておめでとうございます。今年もよろしく...</description>
<content:encoded>&lt;p&gt;こんにちわ。&lt;a href=&quot;http://twitter.com/hasegaw&quot;&gt;@hasegaw&lt;/a&gt;です。あけましておめでとうございます。今年もよろしくお願いします！&lt;/p&gt;

&lt;p&gt;かなり久々のブログ更新となりますが、本日は &lt;a href=&quot;http://atnd.org/events/21910&quot;&gt;カーネル／VM Advent Calendar&lt;/a&gt; にてまたまた私の当番！ってことで、今回は FreeBSD 8.1-RELEASE に Linux KVM 用のタイムカウンタを実装してみたというネタでお話しようかと思います。&lt;/p&gt;

&lt;p&gt;昨年のネタ: &lt;a href=&quot;http://d.ballade.jp/blog/2011/01/freebsd-vimage.html&quot;&gt;FreeBSD VIMAGEを使ったTCP/IPのルーティング デモンストレーション&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;p&gt;■ Linux KVM のタイマ機能&lt;/p&gt;

&lt;p&gt;まずバックグラウンドについて説明しておきましょう。 FreeBSD のはじめとする殆どの OS では、以下の計算式でシステム時間（年月日・時分秒）を把握しています。&lt;/p&gt;

&lt;p&gt;システム時間 = システム起動時の時間 + システム起動後の経過時間&lt;/p&gt;

&lt;p&gt;このうち「システム起動時の時間」はRTC（リアルタイムクロック）の値で初期化し、「システム起動後の経過時間」はOSが定期的にカウンタをインクリメントしています。しかし、仮想化環境ではこの仕組みをそのまま適用すると時刻ズレの原因となりやすいことは、この記事を読むような方であれば&lt;a href=&quot;http://www.uniadex.co.jp/virtualization/movie/play.php?mv=0104&quot;&gt;ご存じのこと&lt;/a&gt;でしょう。&lt;/p&gt;

&lt;p&gt;そこで、タイマの仮想化です。 Linux KVM でもタイマの準仮想化機能があります。&lt;/p&gt;

&lt;p&gt;KVM PVclock&lt;br /&gt;&lt;a href=&quot;http://www.linux-kvm.org/page/KVMClock&quot;&gt;http://www.linux-kvm.org/page/KVMClock&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;これは、ゲスト OS が「おいら時間情報がほしいから、メモリのここに定期的に書いておいてちょ」と仮想マシンモニタにお願いすると、適当な間隔で仮想マシンモニタが指定されたメモリ上に時刻情報を書いておいてくれる、という仕組みです。&lt;/p&gt;

&lt;p&gt;ただ、 KVM のサイトを見るとこの機能は Linux guests only. と書いてあります。&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;color: #3300cc;&quot;&gt;どうして
 Linux でしか使えないの？&lt;br /&gt;それは、ゲスト OS が KVM PV Clock に対応する必要があるからです。&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;しかし KVM の PV Clock は決して難しいものではありません。もともと Xen にインスパイアされて殆ど同じ汎用的なデータ構造を持っているので、すでに BSDL で Xen 対応のコードがある FreeBSD であれば私のヘナチョコがちょろちょろっとコピペして済むレベルです。対応するかしないかは&lt;span style=&quot;color: #3300cc;&quot;&gt;仮想マシンモニタ開発側＆ゲスト OS 開発側のモチベーション次第&lt;/span&gt;なだけなのです！よっしゃ、私は最近 FreeBSD 使っていないけど、やってみるかー。&lt;/p&gt;

&lt;p&gt;ってことでとりあえず動くモノを作ってみましたとさ。&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;■ FreeBSD 用 timecounter: kvmclock 失敗編&lt;/p&gt;

&lt;p&gt;
時は 2011 年 10 月。今回のモノは FreeBSD の timecounter として実装しました。 Linux で言う clocksource ですね。システム起動時には以下のイメージで初期化されます。&lt;/p&gt;

&lt;p&gt;Timecounter &amp;quot;kvmclock&amp;quot; frequency 1800000536 Hz quality 900&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2011/12/29/pvclockgen1500px.png&quot; title=&quot;Pvclockgen1500px&quot; alt=&quot;Pvclockgen1500px&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;このタイムカウンタは、 Linux KVM が定期的に TSC のカウンタをメモリに書いてくれるので、それを使って時を刻んでいます。&lt;/p&gt;

&lt;p&gt;struct pvclock_vcpu_time_info {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; u32&amp;nbsp; &amp;nbsp;version;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; u32&amp;nbsp; &amp;nbsp;pad0;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #ff3300;&quot;&gt;u64&amp;nbsp; &amp;nbsp;tsc_timestamp;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; u64&amp;nbsp; &amp;nbsp;system_time;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; u32&amp;nbsp; &amp;nbsp;tsc_to_system_mul;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; s8&amp;nbsp; &amp;nbsp; tsc_shift;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; u8&amp;nbsp; &amp;nbsp; pad[3];&lt;br /&gt;
} __attribute__((__packed__)); /* 32 bytes */&lt;/p&gt;

&lt;p&gt;とりあえず動いたのですが、しかし実際には問題が起きて使い物になりませんでした。理由は桁あふれです。1.8GHzでカウントアップされていくタイマだと、あっという間に32ビットのカウンタは一週してゼロに戻ります。この結果、アイドル時間が多いと時計が遅れるという最高にイケていないタイムカウンタになりました。なお while true; do date &amp;gt; /dev/null ; done とかしていると非常に精度が高いカウンタであったことは申し添えておきます！&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;■ FreeBSD用timecounter: kvmclock その２&lt;/p&gt;

&lt;p&gt;

時は２０１１年１２月２９日。年末年始はスノーボードに行くので今作らなかったら Advent Calendar のネタがありません。ってことで、とりあえずバージョンアップしました。&lt;/p&gt;

&lt;p&gt;Timecounter &amp;quot;kvmclock&amp;quot; frequency 1000000 Hz quality 900&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2011/12/29/pvclockgen2500px.png&quot; title=&quot;Pvclockgen2500px&quot; alt=&quot;Pvclockgen2500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;このタイマはゲストOSに対して仮想的にマイクロ秒精度のタイマ機能を提供します。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;前回は Linux KVM がシャドウしてくれた TSC の値を使って時を刻んでいましたが、今回は Linux KVM がシャドウしてくれたシステム時間をベースに時を刻みます。&lt;/p&gt;

&lt;p&gt;struct pvclock_wall_clock {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; u32&amp;nbsp; &amp;nbsp;version;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #ff3300;&quot;&gt;u32&amp;nbsp; &amp;nbsp;sec;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #ff3300;&quot;&gt;u32&amp;nbsp; &amp;nbsp;nsec;&lt;/span&gt;&lt;br /&gt;
} __attribute__((__packed__));&lt;/p&gt;

&lt;div class=&quot;yj6qo ajU&quot;&gt;&lt;div tabindex=&quot;0&quot; role=&quot;button&quot; class=&quot;ajR&quot; id=&quot;:u8&quot; data-tooltip=&quot;短縮されたコンテンツを表示する&quot;&gt;&lt;img src=&quot;https://mail.google.com/mail/images/cleardot.gif&quot; class=&quot;ajT&quot; /&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;このデータ自体はナノ秒オーダーのものですが、 t = sec * 1000 + nsec / 1000 としてマイクロ秒のオーダーに変換し、これの情報を OS 側に食わせます。この形であればカーネルが気づかないうちに桁あふれなんてことがそうそう起きません。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;■ 評価&lt;/p&gt;

&lt;p&gt;早速作ったタイムカウンタで仮想マシンを動かしてみました。素人ハックの結果としては割と良好かと思います。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2011/12/29/pvclockcomparision.png&quot; title=&quot;Pvclockcomparision&quot; alt=&quot;Pvclockcomparision&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;これは while true; do date; sleep 1; done の結果をゲスト（上）とホスト（下）で実行しっぱなしにした結果です。&lt;/p&gt;

&lt;p&gt;5時8分0秒が飛んでいるので不安定っぽく見えますが、 sleep 1 の待ち時間がフラついているという問題はあるもののホスト OS から 1 秒以上時間がずれることは無くなりました。 sleep の精度が低い問題はありつつも gettimeofday は安定しているようです。&lt;/p&gt;

&lt;p&gt;また、vCPUがアイドルの場合も、負荷をかけた場合でも、システムの時刻がホストとゲストの間で大きくズレることはないようです。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;12 月 29 日から 1 月 4 日までの 5 日間放置しても、システム時間のずれは生じなかった&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; alt=&quot;Pvclock_0105&quot; title=&quot;Pvclock_0105&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2012/01/04/pvclock_0105.png&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;■ もっと頑張らないといけないこと&lt;/p&gt;

&lt;p&gt;とりあえず自覚している課題は以下の部分です。&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;実はまだ KVM のプローブをしていない。 MSR を一発たたけばいいので、いつでもできます。&lt;/li&gt;

&lt;li&gt;vCPU != 1 の場合を想定していないし、評価していない。vCPU ごとにカウンタを進める必要がありますので、今のコードのままではまずい。このままでも動くかもしれないけど。&lt;/li&gt;

&lt;li&gt;sleep 1 が不安定 ﾟ+.(･ω･)ﾟ+.ﾟ　ヘボグラマなので細かい修正はエキスパートにお願いすればいいかなっと。&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;現時点のやるきのないコードの一部（試行錯誤の跡付き）&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://d.ballade.jp/photos/uncategorized/2011/12/29/pvclockcode_2.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://d.ballade.jp/photos/uncategorized/2011/12/29/pvclockcode_2.png&quot; title=&quot;Pvclockcode_2&quot; alt=&quot;Pvclockcode_2&quot; class=&quot;image-full&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;■ おわりに&lt;/p&gt;

&lt;p&gt;というわけで、「タイマ作りました、動いてます」というとっても退屈な記事ですが、、こんな事してみましたよ、ってことで。私のようなヘボでもいじくれる所があるというのは有り難いものです。&lt;/p&gt;

&lt;p&gt; Advent Calendar 参加者の皆さんの記事、楽しく読ませていただきました。今後ともよろしくお願いします。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</content:encoded>


<dc:subject>FreeBSD</dc:subject>
<dc:subject>KVM</dc:subject>
<dc:subject>タイマー</dc:subject>
<dc:subject>仮想化</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2012-01-04T23:04:37+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2011/06/post-ca66.html">
<title>退職のお知らせ</title>
<link>http://d.ballade.jp/blog/2011/06/post-ca66.html</link>
<description>既にご存知の方も多いかと思いますが、株式会社SRAを退職いたしました。 SRAに...</description>
<content:encoded>&lt;p&gt;既にご存知の方も多いかと思いますが、株式会社SRAを退職いたしました。&lt;/p&gt;

&lt;p&gt;SRAには2004年に新卒として入社、以後7年間に渡りIAサーバを中心に、システム構築および運用サービスに従事しておりました。サーバの構築には学生時代から興味をもって取り組んでいたものの、ビジネスとして取り組むITは非常に新鮮で、同社社員、およびお客様方から大変多くのことについて学ぶことができました。自分にとって忘れられない7年間になりました。ありがとうございました。&lt;/p&gt;

&lt;p&gt;在籍期間中、職場の同僚やマネージャ陣には大変お世話になりました。直接の業務ではないXen徹底入門の執筆、また、昨年に公開した仮想マシンのしくみの解説スライドなどのプロジェクトに必要な時間をやりくりして来られたのは、職場や上司の理解があり、時には、少なからずのバックアップいただけたという事情もあり、同社の社員としてこれまで業務に取り組めた事をありがたく、大変誇りに思っております。&lt;/p&gt;

&lt;p&gt;6/1からの三日間はLinuxCon JAPAN 2011にアテンドさせていただきました。日本中、世界中のエンジニアとまた新たなつながりができました。会期中に受けた刺激で充電し、これから自分がどのようにITインフラストラクチャに関わっていけるかを考えていきたいと思っております。&lt;/p&gt;

&lt;p&gt;SRA在職中は、多くの方々に大変お世話になりました。今後も引き続きご指導のほど、よろしくお願いいたします。&lt;/p&gt;

&lt;p&gt;Takeshi HASEGAWA aka hasegaw&lt;/p&gt;
</content:encoded>



<dc:creator>hasegaw</dc:creator>
<dc:date>2011-06-04T02:30:23+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2011/05/ssmjp_pmtalk.html">
<title>#ssmjp に参加してきました。</title>
<link>http://d.ballade.jp/blog/2011/05/ssmjp_pmtalk.html</link>
<description>5月26日(水)に開催されたささみの会(#ssmjp、新橋勉強会とか別の名前が色...</description>
<content:encoded>&lt;p&gt;5月26日(水)に開催されたささみの会(#ssmjp、新橋勉強会とか別の名前が色々あるようですが)にてプロジェクトマネジメント的観点からプレゼンテーションをさせていただきました。ちょっと私のスケジュールがテンパっていた都合、事実上私の都合に合わせて開催していただいたような感じで……。 @togakushi さんには大変ご迷惑おかけしました。&lt;/p&gt;
&lt;div id=&quot;__ss_8113163&quot; style=&quot;width: 425px;&quot;&gt; &lt;strong&gt;&lt;a title=&quot;20110526ssmjp&quot; href=&quot;http://www.slideshare.net/TakeshiHasegawa1/20110526ssmjp&quot;&gt;20110526ssmjp&lt;/a&gt;&lt;/strong&gt; &lt;iframe width=&quot;425&quot; scrolling=&quot;no&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/8113163&quot;&gt; &lt;/iframe&gt; &lt;div style=&quot;padding: 5px 0pt 12px;&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/TakeshiHasegawa1&quot;&gt;Takeshi Hasegawa&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;p&gt;さて、プロジェクトマネジメントというと、普通は限られた予算・時間・リソース内でいかに仕事を片付けるかという話が一般的にされるわけですが、今回はそれとはちょっと違います。本業における私の立場では、プロジェクトマネジメントというよりはプロジェクトをリードする立場で、いかにプロジェクトが円滑に回るように、最短で片付くように、という観点から支援していく立場にあります。この立場で仕事をしているうちに思ったことなどを資料にまとめて 30 分ほどお話しさせていただきました。&lt;/p&gt;
&lt;p&gt;前日の夜、酔いつぶれた状態で資料を作り始め、途中でやめて寝てしまうという事件があったため（ｗあまり内容がまとまっていない、私の私見と独断ベースの「仲間と一緒に戦うための心得」みたいな感じになってしまいましたが……。&lt;/p&gt;
&lt;p&gt;某社の新人さんも何名かいらっしゃっていたようで……もし、私の話を聞いて、今後、より主体的に仕事に取り組んでくれるような若手になってくれたら ——— この夜の目的としては達成と言えるのかな、とか、そんなことを思っています。&lt;/p&gt;</content:encoded>


<dc:subject>勉強会</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2011-05-30T01:23:35+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2011/05/osol201105.html">
<title>東京OpenSolaris勉強会 2011.05に参加してきました。</title>
<link>http://d.ballade.jp/blog/2011/05/osol201105.html</link>
<description>5月28日(土)に開催された、東京OpenSolaris勉強会 2011.05に...</description>
<content:encoded>&lt;p&gt;5月28日(土)に開催された、東京OpenSolaris勉強会 2011.05に参加してきました。&lt;/p&gt;
&lt;p&gt;@nslope さんに「自宅ZFSで盛り上がろうず！」とお声がけをいただいたので、構成的にヘンタイな我が家のZFS環境について簡単に紹介させていただきました。&lt;/p&gt;
&lt;div id=&quot;__ss_8132829&quot; style=&quot;width: 425px;&quot;&gt; &lt;strong&gt;&lt;a title=&quot;20110528東京OpenSolaris勉強会2011.05&quot; href=&quot;http://www.slideshare.net/TakeshiHasegawa1/20110528osoltokyo201105&quot;&gt;20110528東京OpenSolaris勉強会2011.05&lt;/a&gt;&lt;/strong&gt; &lt;iframe width=&quot;425&quot; scrolling=&quot;no&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/8132829&quot;&gt; &lt;/iframe&gt; &lt;div style=&quot;padding: 5px 0pt 12px;&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/TakeshiHasegawa1&quot;&gt;Takeshi Hasegawa&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;p&gt;OpenSolaris 界隈の方はマニアックな方々ばかりなので今頃私が ZFS 自体の話をしても全然面白くなりませんし、ということで、あくまでもZFS的に非一般的な我が家のZFS環境についての紹介とさせていただきました。
&lt;/p&gt;

&lt;p&gt;私の自宅では、 CentOS 5 の Xen 環境において OpenSolaris の開発版スナップショットが動いており、 ZFS ファイルサーバとして利用しています。こうしてある理由としてはファイルサーバとしてZFSの最新機能を活用しつつ Linux とのコンソリデーションを実現する、またOpenSolarisに対応できないような安価なハードウェアでもZFSの恩恵を得るために、そういった構成にしています。&lt;/p&gt;
&lt;p&gt;ZFSのオイシイところは、信頼性と管理性だと思います。Linuxのmdraidなどは意図せぬ停電やカーネルパニックでアレイの不整合などが起きると大変です。しかし、ZFSの場合は書き込み操作がトランザクション保護されており、中途半端な書き込み操作が多少起きたぐらいではデグレードしません。仮にデグレードしても、 End-to-end checksum による確認が可能なので、デグレ中や復旧作業後にデータが維持できているかどうかを判断できる点も魅力です。また、（喩えれば水と油を１つのバケツに溜めておける、と私はZFSを紹介することが多いのですが）データの管理が非常にフレキシブルなのもポイントです。&lt;/p&gt;
&lt;p&gt;私は基本的には「重要なデータは持たない」（データを持つと管理コストが生じるので）という方針にしていますので、仮に手元のデータがロスしても精々数日ヘコむぐらいで済むよう心の覚悟をいつもしている（つもりな）のですが、これまで３年以上の運用期間中に２回のデグレが発生しても、嬉しいことに、データロスにまでは至っていません。また、これまでの経験から、使い始めた当初は色々と罠があった ZFS ですが、だいたいイケるところが見えてきたので、これからも ZFS を使っていくつもりです。&lt;/p&gt;
&lt;p&gt;青山のオラクルさんのビルにて Linux の上に乗った OpenSolaris の話をしたり、リプレース時のOS候補は FreeBSD-current だとか話をしたりとかなり KY でしたがニヤニヤしながら聞いてくださった参加者の皆さん、ありがとうございました。&lt;/p&gt;
</content:encoded>


<dc:subject>Solaris</dc:subject>
<dc:subject>ZFS</dc:subject>
<dc:subject>勉強会</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2011-05-30T01:00:57+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2011/05/qpstudy06.html">
<title>qpstudy 06 の懇親会に参加してきました。</title>
<link>http://d.ballade.jp/blog/2011/05/qpstudy06.html</link>
<description>5月28日(土)に開催された qpstudy 06 の懇親会に参加してきました。...</description>
<content:encoded>&lt;p&gt;5月28日(土)に開催された &lt;a href=&quot;http://blog.qpstudy.com/Entry/4/&quot;&gt;qpstudy 06&lt;/a&gt; の懇親会に参加してきました。 qpstudy は IT インフラストラクチャを扱うエンカイチックな勉強会で、 qpstudy 03 の頃から、都合がつけばできる限り参加するようにしています。これまで勉強会の参加記録などは blog には書いてなかったんですが、折角 trackback 企画があるのでチャレンジ！&lt;/p&gt;
&lt;p&gt;（本当は本編にも参加したかったんだけど、&lt;a href=&quot;http://hub.opensolaris.org/bin/view/User+Group+tsug/osol_study_2011_05&quot;&gt;東京 OpenSolaris 勉強会 2011.05&lt;/a&gt;でテーマとして ZFS を扱うということで、 @nslope さんに私の都合を考慮して（？？）日程を決めていただいていた事もあり……昼過ぎ〜夕方には東京 OpenSolaris 勉強会＠外苑前、それが終わってから割と急いで大森のニフティさんにハシゴするという感じに……）&lt;/p&gt;
&lt;p&gt;本編では @sho7650 さんのリードにより、普段の宴会チックな qpstudy とは全く雰囲気が違う勉強会になっているなーというのを Twitter のタイムライン越しに感じていたのですが、残念ながらそれが終わった頃にやっとこ現地到着。あ、通用口まで迎えにきてくださった @ysaotome さん、ありがとうございます。&lt;/p&gt;
&lt;p&gt;懇親会は例によってピザとビールを囲んでの LT 大会です。折角なので私も LT やらせていただきました。&lt;/p&gt;
&lt;div id=&quot;__ss_8136241&quot; style=&quot;width: 425px;&quot;&gt; &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/TakeshiHasegawa1/20110528qpstudy06lt&quot; title=&quot;20110528qpstudy06懇親会LT「雪山の話」&quot;&gt;20110528qpstudy06懇親会LT「雪山の話」&lt;/a&gt;&lt;/strong&gt; &lt;iframe width=&quot;425&quot; scrolling=&quot;no&quot; height=&quot;355&quot; frameborder=&quot;0&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/8136241&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot;&gt; &lt;/iframe&gt; &lt;div style=&quot;padding: 5px 0pt 12px;&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/TakeshiHasegawa1&quot;&gt;Takeshi Hasegawa&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;

&lt;p&gt;本当は別のネタを仕込んでいたのですが、このスライドのほうが、勉強会本編のテーマにも沿ってるかも知れなくてGoodかな？と思い、セレクト。簡単にご紹介すると、明治３５年に行われた八甲田山の雪中行軍のお話をベースに、プロジェクトを円滑を進めるためには以下のような点が重要だよね？という感じでまとめさせていただきました。
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;スコープを把握する&lt;/li&gt;
&lt;li&gt;問題を見つけたら対策をとる。判断を先送りしない&lt;/li&gt;
&lt;li&gt;主体的・積極的に問題に取り組む。他人まかせにしない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今あらためて見るとヘボいスライドだなぁ……&lt;/p&gt;&lt;br /&gt;&lt;p&gt;◇&lt;/p&gt;

&lt;p&gt;後、もう一本。ちょっと時間が余っているということだったので、 &lt;a href=&quot;http://d.hatena.ne.jp/masudaK/20110529/1306674523&quot;&gt;LT で @masudaK さんが発表されていた「海外MLに積極的に出ようよ！」という内容&lt;/a&gt;に共感したので、全くの突然でしたが、カーネル／VM探検隊向けに作成した LT 資料でも簡単に発表させてもらいました。&lt;/p&gt;

&lt;div id=&quot;__ss_8057490&quot; style=&quot;width: 425px;&quot;&gt; &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/TakeshiHasegawa1/20110522kernelvm-xenvirtio&quot; title=&quot;20110522kernelvm xen+virtio&quot;&gt;20110522kernelvm xen+virtio&lt;/a&gt;&lt;/strong&gt; &lt;iframe width=&quot;425&quot; scrolling=&quot;no&quot; height=&quot;355&quot; frameborder=&quot;0&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/8057490&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot;&gt; &lt;/iframe&gt; &lt;div style=&quot;padding: 5px 0pt 12px;&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/TakeshiHasegawa1&quot;&gt;Takeshi Hasegawa&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;

&lt;p&gt;なお、 LT の発表時間実績が 5 分 0 秒ジャストだったのは、、、、、偶然ですｗ&lt;/p&gt;

</content:encoded>


<dc:subject>勉強会</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2011-05-30T00:42:00+09:00</dc:date>
</item>
<item rdf:about="http://d.ballade.jp/blog/2011/04/xen-meets-virti.html">
<title>Xen Meets virtio</title>
<link>http://d.ballade.jp/blog/2011/04/xen-meets-virti.html</link>
<description>開発版バージョンである xen-unstable と最新の qemu を組み合わ...</description>
<content:encoded>&lt;p&gt;開発版バージョンである xen-unstable と最新の qemu を組み合わせることによって virtio-net が Xen でも使えるようになってきたので紹介したいと思います。&lt;/p&gt;

&lt;p&gt;■ 必要なもの&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xenbits.xensource.com/xen-unstable.hg&quot;&gt;xen-unstable&lt;/a&gt; をレポジトリからひっぱってくる&lt;/li&gt;
&lt;li&gt;qemu を git://xenbits.xen.org/people/aperard/qemu-dm.git から引っ張ってくる。ブランチ qemu-dm-v14 をチェックアウト。&lt;/li&gt;
&lt;li&gt;QEMU のクラッシュを防ぐ vmport パッチ &lt;a href=&quot;http://ysr.jp/~hasegaw/upstream-qemu_vmport.patch&quot;&gt;http://ysr.jp/~hasegaw/upstream-qemu_vmport.patch&lt;/a&gt;&lt;br /&gt;
(vmportにアクセスしてくるような最近のdistroを動かす際に必要)
&lt;/li&gt;

&lt;li&gt;virtio対応のゲストOS
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;■ 設定方法&lt;/p&gt;

&lt;p&gt;ドメイン定義ファイルで vif 行を下記イメージで記述します。&lt;/p&gt;
&lt;pre&gt;vif = [ &#39;type=ioemu, bridge=br0,mac=00:16:3e:09:ac:cd,model=virtio&#39; ]
&lt;/pre&gt;

&lt;p&gt;またドメインの作成には xl コマンドを使ってください。 xm コマンドだと新しい QEMU に対応できない可能性があります。&lt;/p&gt;

&lt;p&gt;■ ゲストOS側の留意事項&lt;/p&gt;

&lt;p&gt;Xen と QEMU の割り込み関係の相性が悪いのか、 MSI(-X) による割り込み通知が正しく inject されないようです。現時点の回避策として、ゲスト OS として Linux を起動する際に下記のカーネルパラメータを付けると問題を回避できます。&lt;/p&gt;
&lt;pre&gt;pci=nomsi&lt;/pre&gt;

&lt;p&gt;■ 参考&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://wiki.xen.org/xenwiki/QEMUUpstream&quot;&gt;QEMUUpstream - Xen Wiki&lt;/a&gt;&lt;/p&gt;


</content:encoded>


<dc:subject>virtio</dc:subject>
<dc:subject>Xen</dc:subject>
<dc:subject>仮想化</dc:subject>

<dc:creator>hasegaw</dc:creator>
<dc:date>2011-04-28T03:40:05+09:00</dc:date>
</item>


</rdf:RDF>

