tkokamoの日記

HPCの研究開発なのでそんなことをかきたい

FUSEでfilesystemを使ってみる。

仕事で分散ファイルシステムを作っているんだけども、カーネルレイヤでのコーディングなので、非常に神経使うし面倒(楽しいけれども)。 Filesystem in userspace(FUSE)というものの存在はずいぶん前から認知していて学生時代にsshfsなどで使っていた。 FUS…

openCLのコードを少し調べてみる(カーネルの実行)

openCLの最初の記事で動かしたコードについて見て行く。 記事:openCLを動かしてみる - tkokamoの日記 動かしたコードのソース:OpenCLで行列の掛け算をしてみた : 試行錯誤な日々 そもそも何をするコードだったのか、、、 並列かしているのは、行列のかけ算…

openCLのコードを少し調べてみる(デバイスの情報取得)

前回はとりあえずコードを動かした。 http://tkokamo.hateblo.jp/ openCLを動かしてみる - tkokamoの日記 前回のコードを見るとカーネルコードの実装以前にclGetPlatformIDsやclGetDeviceIDsという函数が呼ばれていて気になったので、デバイスの情報取得周り…

openCLを動かしてみる

HPC関連の仕事してるくせに(システムソフトを作っているので)書いたことないから、作業記録を込めて簡単に動かしてみる。 openCLとは wikipediaをみれば多分わかる。(自分は専門じゃないのでwikipediaが合っているかどうかはわからない) OpenCL - Wikipe…

「メモ」hwlocでノード構成を表示

NUMAのマシンなどでどのノードにどのデバイスが接続されていることを知るのにhwlocコマンドが役立つ。 以下はqemuでNUMA2ノード構成、nvmeデバイスをエミュレートした場合の構成

シグナルのブロック/無視の覚書き

少し調べていたのでメモ。基本的にはカーネル内の話。コードはv4.9.6 シグナルに関しては言葉がややこしいので、以下のようにこの記事では使う。 シグナルの登録 シグナルが生成され対象のタスクのpendingリストに繋がった状態。 シグナルの受信 シグナルが…

RCU(Read Copy Update)をちゃんと知る(2)-1 RCUにおけるポインタの更新と参照

はじめに 前回(http://tkokamo.hateblo.jp/entry/2017/08/12/191142)で概要は終わりにし、 今回からはコードを見ていこうと思います。 大体以下のような流れでRCUの実装を見ていこうかと思います。 rcu_dereference(), rcu_assign_pointer() ← 今回 Classic …

RCU(Read Copy Update)をちゃんと知る(1)-2 実装よりの概要

はじめに 前回(http://tkokamo.hateblo.jp/entry/2017/05/31/213427)は、かなりざっくりとした理解だったのでもう少し実装に近づいた概要です。 (1) 概要(概要)← 前回と今回 (2) Linuxでの実装 (3) rcu-walk(RCUの応用先) 今回までで概要は終わらして、…

RCU(Read Copy Update)をちゃんと知る(1)-1 ほんとの概要

はじめに ファイルシステムのrcu-walkを理解するためにRCUの勉強から始めようと思ったので書留ます。 RCUとはざっくりこんなものだ、と分かっている前提での記録です。 予想している流れとしては、 概要(概要)← 今回 Linuxでの実装 rcu-walk(RCUの応用先…

カーネルスタックがvmalloc領域になったことの確認

Linux 4.9からカーネルスタックにvmalloc領域が用いられるようになった。 v3.10系とv4.10系で以下のモジュールをロードしてみて、実際に確認してみた。 ディストリはCentOS7.2 stack_test.c #include <linux/module.h> #include <linux/kernel.h> static int __init stack_test_module_init( </linux/kernel.h></linux/module.h>…

Xen on KVM (1)

KVMの上でXen(HVM)を動かそうとした時になかなか、解決方法がわからなかったので記録しておく。とは言っても、まだXenの上でDom Uは動かして無いんですが、、、。Dom 0が動くまでの道のりは以下の通り動作環境はホストがUbuntu 14.04、ゲストがUbuntu 12.04 …

virtio(vhost)の概要

48-146407 kvmなどの仮想化環境において、ゲストOSのネットワークやディスクI/Oを早くするために、virtioと呼ばれる準仮想化ドライバドライバを用いることがある。 今回は、あまり技術的に細かい部分には突っ込まず、なぜゲストOSのI/Oが遅いのか、なぜvirti…