タグ別アーカイブ: ハードウェア

第9回 カーネル内部のセキュリティを強化,ネストカーネルでメモリ区画化:BSD界隈四方山話|gihyo.jp … 技術評論社

ネストカーネルでは,次の過程がアイディアの根幹をなしています。

メモリ管理ユニット(MMU:Memory Management Unit)のページテーブルへのアクセスを規制することができれば,カーネル内部においてもメモリの区画化を実現できるのではないか。たとえそれが単一のハードウェア特権レベルで動作しているのであったとしても。

カーネルはこれまでスーパバイザモードで動作し,その世界はすべての特権を持つものでした。ネストカーネルのアイディアは,このスーパバイザモードで動作するカーネルを仮想化して,そこでのメモリアクセスをより細かに規制して保護すればよいのではないか,というものです。

ここで従来のカーネルは次の2つのカーネルに分かれます。従来のカーネルに相当するものは「アウタカーネル」と呼ばれ,新しく追加されるカーネルが「ネストカーネル」と呼ばれています。そして,ユーザランドからシステムコールが呼ばれると,カーネルは次のような処理をするようになります。

システムコールが呼ばれる

アウタカーネルが呼ばれる

アウタカーネルはネストカーネルを呼ぶ

ネストカーネルが処理を実施する

処理は「アウタカーネル」と「ネストカーネル」の2つに分かれています。そして従来と異なり,それぞれ次のような規制が加わります。

アウタカーネル

ページテーブルは常にリードオンリー

ネストカーネル

カーネルコードはリードオンリー

カーネルデータは実行不可能(Non-executable)

ユーザコードはSMEP(Supervisor Mode Execution Protection)

ユーザデータはSMEP(Supervisor Mode Execution Protection)

ページテーブルは常にリードオンリー

引用元: 第9回 カーネル内部のセキュリティを強化,ネストカーネルでメモリ区画化:BSD界隈四方山話|gihyo.jp … 技術評論社.

Cerevo、技適取得済みWi-Fiモジュール発売 ハードベンチャー向け新ブランド立ち上げ – ITmedia ニュース

Cerevoは7月7日、ハードウェアスタートアップや電子工作ファン向けの新ブランド「Cerevo Maker series」を立ち上げ、第1弾製品として、技術基準適合証明(技適)取得済みの無線LANモジュールとブレイクアウトボードのセット「CDP-ESP8266」を発売した。842円(税別、為替レートにより変動)。

Cerevo Maker seriesは、モジュールやキットなどハードウェア販売や、開発に必要なソフトウェア、ライブラリ、ノウハウ提供などを行い、ハードウェア開発を支援する新ブランド。

第1弾製品の「CDP-ESP8266」は、IEEE 802.11b/g/n対応のSoC「ESP8266EX」を搭載した技適取得済みの無線LANモジュール「ESP-WROOM-02」と、同モジュールをブレッドボードやユニバーサルボードに取り付けられるブレイクアウトボードをセットにした製品。

無線LANモジュール「ESP-WROOM-02」単体でも販売する。単体なら100個・1000個単位での購入も可能だ。価格(税別)は1個710円、100個なら1個あたり685円、1000個なら1個当たり673円。

引用元: Cerevo、技適取得済みWi-Fiモジュール発売 ハードベンチャー向け新ブランド立ち上げ – ITmedia ニュース.

Googleが同社のデータセンター内のネットワーキングについてその秘密を(すこしだけ)明かす | TechCrunch Japan

Googleがデータセンター用に独自のハードウェアを作っていることは、よく知られているが、しかし、おそらくあまり知られていないのは、データセンター内部で使うネットワーキングプロトコルも、インターネットの標準プロトコルではなく同社独自のものであることだ。

Googleによると、現在の’Jupiter’と呼ばれるネットワーキングのセットアップは、同社の第五世代のセットアップで、自前のデータセンターの初代に比べると容量は100倍に増えている。現世代の二分割帯域幅(ネットワークを二つの部分に分けたときの両者間の帯域)は、毎秒1ペタバイトだ。言い換えるとそれは、10万台のサーバが互いに10GB/sで対話できる、ということ。

Googleのネットワーキング技術のトップAmin Vahdatによると、全体的なネットワークコントロールスタックは、“従来のルータ中心型のインターネットプロトコルよりもむしろ、Google自身の分散コンピューティングのアーキテクチャと共通している部分が多い”。

彼は、Googleのデータセンターネットワークの設計原則として、次の三点を挙げた:

ネットワークの編成にはClosのトポロジを使用して、小型で安価なスイッチの集合が大きな論理スイッチの性質を備えるようにしている。

データセンター内の数千のスイッチを管理するために中央集権型のソフトウェアコントロールスタックを使い、それらが実質的に一枚の織物のように働くようにしている。

インターネットの標準プロトコルではなく、データセンター用に社内で特製したプロトコルを主に使いたいので、そのためにソフトウェアもハードウェアも内製している。

Facebookが過去に共有した情報などに比べると、それほど詳しくない。数か月後ぐらいには、もっとましな情報を出してほしい。とくに知りたいのは、同社独自のネットワーキングプロトコルの動作仕様だけど、それに関してはちゃんとしたペーパー(技術論文)を発表してほしいね。

引用元: Googleが同社のデータセンター内のネットワーキングについてその秘密を(すこしだけ)明かす | TechCrunch Japan.

【仮想化道場】Haswellアーキテクチャの最上位プロセッサ「Xeon E7 v3」 – クラウド Watch

最も大きいのは、Xeon E5 v3でサポートが見送られたTSX(トランザクショナルメモリ)がXeon E5 E7 v3では正式にサポートされたことだ。

TSXでは、メモリのロック機能とデータベースなどで使われるトランザクショナル機能をハードウェア(命令セット)で実現している。

メモリのロックは、現在読み書きしているメモリをロックして、ほかのプログラムから、作業中にデータを書き換えられることを防ぐ機能だ。

この機能は便利だが、ほかのプログラムからはロックが解除されない限り、他のプログラムはそのメモリの読み書きができないため、他のプログラムはアイドル状態になってしまう。もしプログラムのミスなどでメモリのロックが解除されない場合は、ずっとアイドル状態で待ち続けることになる(デッドロック)。

そこで、データベースなどで使われているトランザクショナル機能と同じような機能をメモリに持ち込んだのが、TSXになる。

TSXでは、メモリロックを行って、メモリの読み書きを制限するのではなく、全てのプログラムを同時に実行させる。

もし、あるメモリ領域のデータを読み込こんで処理を行っているプログラムがある場合に、別のプログラムが同じメモリ領域に別のデータを書き込んだとする。そのときには、メモリに新しいデータを書き込む段階で、読み込んだときのデータと比較して、データが異なっていたら、処理のやり直しを行う。このことをトランザクショナル処理という。

Xeon E7 v3を使えば、トランザクショナル処理プログラミングせず、プロセッサのTSX機能を利用することができる。また、ロック/アンロック機能、トランザクショナル機能をハードウェア(命令セット)で実現するため、性能が向上する。ソフトウェアで、ロック/アンロック機能、トランザクショナル機能をインプリメントするには、膨大なコードが必要になるが、これがいくつかの命令で実現できるなら、アプリケーション自体のコードもシンプルになる。このため、TSX機能をサポートしたインメモリデータベースなどでは、高い性能を出すことができる。

引用元: 【仮想化道場】Haswellアーキテクチャの最上位プロセッサ「Xeon E7 v3」 – クラウド Watch.

【仮想化道場】Haswellアーキテクチャの最上位プロセッサ「Xeon E7 v3」 – クラウド Watch

仮想化においても、Xeon E5 v3と同じくVMCSシャドウイングがサポートされている。この機能では、頻繁に起こるVM Read/VM WriteをVMCSシャドウが中間層としてまとめ、ルートVMMに送ることで、頻繁に起こるVM開始/VM終了の数を劇的に減らす。VM開始/VM終了は、プロセッサから見れば、1つの命令に多くのクロックが費やされるため、これを減らすことで、ハイパーバイザーのパフォーマンスがアップすることになる。

また、ハイパーバイザーが使用するEPT A/Dビットをハードウェアが管理することで、ハイパーバイザーがEPT A/Dビットのトラッキングをする必要がなくなる。これにより、ハイパーバイザーの動作が軽くなる。

引用元: 【仮想化道場】Haswellアーキテクチャの最上位プロセッサ「Xeon E7 v3」 – クラウド Watch.

Linuxカーネル4.0リリース、ライブカーネルパッチを導入 | SourceForge.JP Magazine

2月中旬に公開されたLinuxカーネル3.19に続くリリースとなる。Linuxカーネル3.19の公開後、Torvalds氏はGoogle+にて次期版の名称を「Linux 3.20」とするか、以前構想を明かした通りに「4.0」とするかについてオンライン投票の形で意見を募った。投票では少しの差(56%対44%)で「4.0」が上回っており、その後2月末に初のリリース候補版を「Linux 4.0」として公開した。今回のバージョン番号の変更については「数字が大きくなることを避けること」を目的としており、Torvalds氏も「4.0の前提は、新しい実験的な機能よりも安定版リリース」でありこれに沿うものと記している。

大きな変更点として、再起動をせずにカーネルにパッチを適用できる基礎的な仕組みが導入された。米Red Hatのライブパッチツール「kpatch」とSUSEのライブパッチツール「kGraft」をサポートする。一方でremap_file_pages()システムコールは削除された。この機能のエミュレーションは残るため、アプリケーションの動作に影響がでることはないという。

ファイルシステム側ではパラレルNFS(pNFS)ブロックサーバーのサポートが加わり、btrfsでのRAID 5/6も改善した。また、ubifsファイルシステムでマルチキューブロックレイヤーをサポートし、準仮想化のvirtioはバージョン1.0となった。ext4ではlazytimeファイるシステムオプションのマージも行われており、ファイルシステムに多数のI/Oを加えることなく正確なアクセス時間を効率的に追跡できるとしている。overlayFSでは複数のリードオンリーレイヤーのサポートが加わっている。

このほかにも、perfツールの改善など多数の細かな機能強化が施された。IBM s/390 z13プロセッサなど、新しいプロセッサ、ハードウェアのサポートも加わっている。

引用元: Linuxカーネル4.0リリース、ライブカーネルパッチを導入 | SourceForge.JP Magazine.

CPUに適度に間違わせることで節電する技術 – PC Watch

一般に、トランジスタはプロセスルールが縮小すると信頼性が下がる。電圧を上げると、信頼性は上がるが、同時に消費電力も上がってしまう。現在のプロセッサは、消費電力の壁に当たっており、いかにして効率を上げるかが求められている。 そういった事情の中、近年議論されているのが、“概算的演算”を行なうコンピュータシステムだ。例えば、映像や画像処理において、1ピクセル色が本来と違うといった、若干の出力エラーがあっても、おおよそ合っていれば、ユーザーはそれを許容できる場合がある。これを逆手に取り、CPUやメモリなどのチップの一部の電圧を下げ、その部分で明示的に演算をさせることで、演算の正確さや信頼性をある程度犠牲にしつつも、消費電力を減らすというのが、概算的なコンピュータシステムのコンセプトだ。 このシステムで問題になるのが、いかにして許容できる範囲での“非信頼性”を得るかという点だ。今回MITが考案した「Chisel」というシステムでは、コードのどの部分にエラーを許容させるかをプログラマーが指定すると、どの命令を信頼できないハードウェアに割り当てるかを自動的に決定できる。応用範囲は、画像処理、金融分析アルゴリズムなど限定的ではあるが、消費電力%9

引用元: CPUに適度に間違わせることで節電する技術 – PC Watch.

ストレージI/O高速化への取り組み:Linux BLK-MQ/SCSI-MQ – Interconnect Your Future – InfiniBand and RoCE

Linux Kernel 3.13で実装されたマルチキューブロックレイヤにより、複数のハードウェアキューがサポートされ、複数のCPUコアにI/Oが分散されるようになり、より良いSSD性能とレイテンシー削減が実現された。Linux Kernel 3.16では、「BLK-MQ」コードが完成され、優れた性能が期待される。

引用元: ストレージI/O高速化への取り組み:Linux BLK-MQ/SCSI-MQ – Interconnect Your Future – InfiniBand and RoCE.

ストレージI/O高速化への取り組み:Linux BLK-MQ/SCSI-MQ – Interconnect Your Future – InfiniBand and RoCE

複数のCPUコアと複数のハードウェアキューを活用する新しいコードの期待性能に関しては、「BLK-MQの活用は、全てのワークロード下でCPU使用率を劇的に減少させ、従来のコードでCPU使用率100%であったものを20%以下にし、ストレージサブシステムの512バイトのリード及びライト性能を最大化し、100万IOPS(1M IOPS)を容易に実現させる」

引用元: ストレージI/O高速化への取り組み:Linux BLK-MQ/SCSI-MQ – Interconnect Your Future – InfiniBand and RoCE.

Solaris 10 Feature Spotlight: Solaris ゾーン

Solaris ゾーン機能は、FreeBSD Jails と同じ基本概念に基づいています。 FreeBSD Jails と Solaris ゾーンのどちらでも、実行環境のそれぞれのビューはお互いに完全に隔離され、ある環境にあるプロセスは別の環境にあるプロセスにシグナルを送出できず、そのプロセスを参照することさえできません。 Jails とゾーンでは、1 つのインスタンスのオペレーティングシステムだけが共有されるため、CPU が 1 つしかないマシンでも、複数の実行環境が共存できます。

ゾーンには、グローバルゾーンと非グローバルゾーンの 2 種類があります。 Solaris ゾーン機能が有効になっているマシンには、1 つのグローバルゾーンと最大で 8191 の非グローバルゾーンがあります。 1 台のマシンで使用できる最大ゾーン数は、そのマシンのハードウェアリソースによって決まります。 それぞれのゾーンには、起動時に ID が割り当てられます。 グローバルゾーンの I D は常に 0 になり、起動可能な Solaris カーネルはグローバルゾーンだけに収容されます。 すべてのデバイス、ファイルシステム、他のゾーンを認識できるのはグローバルゾーンだけです。 また、グローバルゾーンは、非グローバルゾーンの設定、インストール、管理を行える唯一のゾーンでもあります。

非グローバルゾーンには、グローバルゾーンにインストールされた Solaris OS のサブセットが収容されます。 さらに、グローバルゾーンにインストールされていないパッケージも組み込むことができます。 それぞれの非グローバルゾーンには、そのゾーンに関連するインストール済みのソフトウェアパッケージを記録した専用のパッケージデータベースがあり、グローバルゾーンや他の非グローバルゾーンとの間でパッケージの情報は共有されません。 非グローバルゾーンには、ローカライズされた設定情報や、他のゾーン固有のファイルやディレクトリも含まれています。

引用元: Solaris 10 Feature Spotlight: Solaris ゾーン.