タグ

カーネルに関するakaneharaのブックマーク (17)

  • Linux システムコール 徹底入門 - SIer だけど技術やりたいブログ

    Linux システムコールについて調べたことをまとめる。システムコールの仕組みを理解すると、 OS とアプリケーションがどのように連携して動いているのかを理解できるようになります。 システムコールは CPU に依存する処理が多いため、 x86_64 に絞ります。 検証環境 ]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) ]# uname -a Linux localhost.localdomain 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ]# cat /proc/cpuinfo | head processor : 0 vendor_id : GenuineInt

    Linux システムコール 徹底入門 - SIer だけど技術やりたいブログ
  • Linuxのpipeの実装を見てみる - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Unix V6のpipe()と比べてLinuxのpipe()どう実装しているんですかねーなんて話を最近したのでちょっと見比べてみた。 V6のpipeははじめてのOSコードリーディング 読書会 (15)でやったところなんだけど、俺は風邪ひいて家で引きこもってたので・・・ V6のpipeの挙動は大体こんな感じ。 pipeはルートディスクのストレージ領域を4096B(8ブロック)使用し実現する 4KBのデータ領域はひとつのファイルとして扱われる(inodeが割り当てられる) オンメモリではなくてストレージを経由するが、バッファサイズが小さいのでブロックデバイスのバッファキャッシュが効きやすいようになっている pipeの受け手がデータを読みだす前に他の優先度の高いプロセスがブロックデバイスを使用するとキャッシュが効かなくなる可能性あり でも、データはストレージに書かれているので内容が壊れると言った

    Linuxのpipeの実装を見てみる - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • Linux におけるファイル I/O の基礎

    すべてがファイルというモデルの Linux (Unix) において、ファイル I/O (以降単に I/O と書く) を知っておいて損はない。 この記事では、基的なファイルと関連する I/O について、対応する Linux システムコールも併せて説明する。 次回はこれらを実際に Linux 上で確認する予定。 ファイルUnix におけるファイルとは、普通「通常ファイル」のことを指し、バイトがリニアに並んだデータ (byte stream) のことである。 ファイル内のバイトは読み書きが可能で、指定されたバイトから開始する。この開始バイトはファイル内の「位置」と考えることができ、ファイルポジションまたはファイルオフセットという。 通常ファイルとは別に、スペシャルファイルというファイルとして表現されたカーネルオブジェクトがある。Linux では、スペシャルファイルとしてデバイスノード・名前付き

  • Linux シグナルの基礎

    TLPI (The Linux Programming Interface) 再々。 TLPI の輪読の際に @matsumotory よりシグナルセットあたりをまとめるようにと指令が出たので、拙遅な感じでまとめました。 シグナルとは プロセス間通信の一種。「プロセスにシグナルを送信すると、そのプロセスの正常処理に割り込んで、シグナル固有の処理(シグナルハンドラ) が実行される」プロセス側では、シグナルを受信した際の動作(シグナルハンドラ) を設定することや、シグナルをブロックすることも可能。 コンソールで、プロセスを終了させるためにkill -9 <PID>とかCtrl+Cとかした際にも、対象プロセスにシグナルが送信されている。 ちなみに、PID「1」の initsystemd にkill -9 1しても何も起らない。(そういえば昔、oom-killer に init を殺された覚

    Linux シグナルの基礎
  • 第1回「 kdump ノススメ」 | NTTデータ先端技術株式会社

    Tweet カーネルパニックは予期していない時に起こります。それが起こらないように備えることは誰にもできません。だから、「もし自分が管理しているシステムでそれが起こったらどうしよう」と考えてみることには意味があります。 カーネルパニックが起こったとき、あなたが気にするのは、「どうしてだろう?」、でありまた、「どうすれば元のように動作させられるだろう?」のはずです。2つ目の疑問は、多くの場合1つ目の疑問の結果に依存します。つまり、あなたは「どうしてカーネルパニックが発生したか」を調べることになります。それについて、(カーネルが正常に動作している今)できることを考えてみましょう。 カーネルパニックになるということは、「カーネルがパニックした」、すなわち「何が何だかよくわからない」状態になるということですから、それが発生してから論理的な処理はできません(できないからこそパニックしているわけです)

    第1回「 kdump ノススメ」 | NTTデータ先端技術株式会社
  • nfsiostat で NFS の I/O レイテンシや IOPS を調べる - ablog

    NFS で iostat の await と svctm のような情報を取れるツールが欲しいと思っていたら nfsiostat という素敵なツールを見つけた。await にあたるのが avg exe (ms)、svctm にあたるのが avg RTT (ms) だと思う。 iostat の await と svctm の意味は Linux の iostat の出力結果を銀行のATMに例えて説明してみる - ablog 参照。 書式 $ nfsstat <interval> 実行例 ops/s: 秒間の read または write リクエストの発行回数 kB/s: 1秒間に read または write されたサイズ(KB) kB/op: 1回の read または write の秒間の平均サイズ(KB) avg RTT (ms): カーネルが RPC リクエストを発行してから応答までの時間

    nfsiostat で NFS の I/O レイテンシや IOPS を調べる - ablog
  • Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Linuxカーネルのコードを読んでて、なるほど〜と思うことはよくあるけど、その中でも特に今までの考え方をぶち壊してくれたのはなんだっけと思ったところ、やっぱりリスト構造かなと言うところ。 c言語でリスト構造を作る場合、一般的な教科書方式だと↓のようにデータとnextポインタは密結合になってると思います。これの場合、struct foobarのポインタをnext要素に使っているので、他の構造体(例えば、struct hogehoge)で同じことをしようとすると、その構造体ではstruct hogehoge *nextというメンバ変数を持つ必要があります。 ヘッド要素はstruct foobarです。 struct foobar { int n; char s[64]; struct foobar *next; }; struct foobar head; Linuxカーネルの場合、データとリ

    Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • Linux Insides : カーネル起動プロセス part1 | POSTD

    ブートローダからカーネルまで これまでの私の ブログ投稿 を読まれた方はご存じかと思いますが、しばらく前から低水準言語を使うようになりました。Linux用x8664アセンブリ言語プログラミングについても書いています。また、同時にLinuxのソースコードにも触れるようになりました。下層がどのように機能しているのか、コンピュータでプログラムがどのように実行されるのか、どのようにメモリに配置されるのか、カーネルがどのように処理や記憶をするのか、下層でネットワークスタックがどのように動くのかなどなど、多くのことを理解しようと意欲が湧いています。これをきっかけに、 **x8664** 版Linuxカーネルについてシリーズを書いてみようと思いました。 私はプロのカーネルプログラマではないことと、仕事でもカーネルのコードを書いていないことをご了承ください。個人的な趣味です。私は下層で何が起きているのかと

    Linux Insides : カーネル起動プロセス part1 | POSTD
  • Linux のページ回収まわりのカーネルパラメータ - ablog

    Linux(kernel 2.6.32-303 以降)のDBサーバでメモリ16GB、スワップ領域16GBの場合、ざっくりこんな感じが良いかなという妄想メモ。 vm.swapiness=1 vm.overcommit_memory=2 vm.overcommit_ratio=80 vm.min_free_kbytes=524288 vm.extra_free_kbytes=1048576(kernel 3.5以降) vm.swappiness=1 でページアウトよりページキャッシュ解放を優先させる。kernel 2.6.32-303 以降、0 にすると OOM Killer が発動しやすくなるらしいので、1 にする。 vm.overcommit_memory=2 でオーバーコミットしないようにして、OOM Killer が発動しにくくする vm.overcommit_ratio=80 で仮想

    Linux のページ回収まわりのカーネルパラメータ - ablog
  • /proc/meminfoを考える - めもめも

    通りすがりの貴方・・・・ /proc/meminfoのあっちの値とこっちの値を足したら、なんでそっちの値と同じにならないの・・・・ と悩んだことありますよね? /proc/meminfoは、カーネルが内部的に管理している枠組みでのメモリ情報をそのまま出しているので、残念ながらユーザ視点で知りたいメモリ情報とは一致しません。 とはいえ、変な解釈をして無意味に悩まないために、それぞれの値の意味合いと項目間の関係を知っておくのは有意義です。私の理解の範囲で、それらの関係をまとめていきます。 #私の理解も完璧ではないので、間違いあればやさしくご指摘お願いします。 参考資料 http://mkosaki.blog46.fc2.com/blog-entry-1007.html 2011/09/07 追記: tmpfsがSwapCachedに含まれるのは幻想でした。tmpfs=Shmemに修正しました。

    /proc/meminfoを考える - めもめも
  • 【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ

    はじめに linuxのメモリ利用容量(空き容量)の考え方 linuxのメモリ利用容量/空き容量の計算方法 ■RHEL7 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL6 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL5以前 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 蛇足 その1:無名ページとファイルページ その2:図解の内容のツッコミ その3:RHEL6の計算 その4:Inactiveを空き領域とすることは間違い。 はじめに linuxサーバを利用する上で何時も頭を悩ますものの一つが、メモリ利用状況の評価(メモリ利用率)ではないでしょうか。私も悩みます。そこで

    【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ
  • Linux I/O のお話 write 編 - naoyaのはてなダイアリー

    write はページに dirty フラグを立てるだけなので決してユーザープロセスを待たせない って、当にそうなんでしょうか?(否定しているわけではなく、純粋な疑問です。) と質問をもらったので、最近追ったことをここでまとめます。かなり長文です、すいません。また、まだまだ不勉強なので間違っているところもあるかもしれません。ツッコミ大歓迎です。 まず、オライリーのカーネルの 15章 ページキャッシュ 15.3 汚れたページのディスクへの書き込み から引用。 ご存知のように、カーネルは、ブロック型デバイスのデータを含むページをページキャッシュに蓄えています。プロセスが何らかのデータを更新した場合は、必ず対応するページに汚れている印をつけます。すなわち、PG_dirty フラグを設定します。 UNIX システムでは、汚れたページのブロック型デバイスへの書き込みを遅延することができます。この方

    Linux I/O のお話 write 編 - naoyaのはてなダイアリー
  • Linuxカーネルの「TCP_TIMEWAIT_LEN」変更は無意味?

    小崎 資広 (KOSAKI Motohiro) @kosaki55tea . @sonots から日のWeb界隈ではTCP_TIMEWAIT_LEN を変更してカーネルリコンパイルがデファクトという話を聞いて軽くぐぐってみたところ、たしかに大量にそのようなページがヒットする。しかもどれ一つとして理由が書いてない。そして日特有の現象 2015-09-09 00:03:14 小崎 資広 (KOSAKI Motohiro) @kosaki55tea 軽くソースを見た感じだと、tcp_tw_reuse をセットすると1秒で TIME_WAITのsocketは再利用が始まるので、いまひとつリコンパイルの必要性が分からず。これ、ソース呼んで妥当性チェックした人がいるノウハウなのかなあ 2015-09-09 00:04:39

    Linuxカーネルの「TCP_TIMEWAIT_LEN」変更は無意味?
  • Linuxカーネル・コンパイル入門 前編:カーネル・コンパイルすべき人,すべきでない人

    ソース・コードが自由に入手できるLinuxならではの楽しみが,カーネルをコンパイルして,独自のシステムに仕立てられること。例えば,より新しいカーネルのソース・コードを入手し,コンパイルして導入すれば,最新機能をいち早く試せる。初めて「カーネル・コンパイル」に挑戦する人に向けて,カーネルを安全に導入する方法を2回に分けて解説する。前編は,カーネルのコンパイルから導入するまでの概要を紹介する。 普段何げなく使っているLinuxディストリビューション。その中核をなすカーネルは,もちろん,プログラムの一種である。Linuxが登場した当初は,ユーザーが自分でコンパイルして導入するのが当たり前だった。しかし,Linuxディストリビューションが“進化”した今では,実行形式で提供される場合がほとんどだ。 Linuxディストリビューションと共に提供される(実行形式の)カーネルは,無難に動作する反面,チューニ

    Linuxカーネル・コンパイル入門 前編:カーネル・コンパイルすべき人,すべきでない人
  • Oidon.net is for sale | HugeDomains

    Make 24 monthly payments Pay 0% interest Start using the domain today. See details

    Oidon.net is for sale | HugeDomains
  • The Linux Kernel

    David A Rusling david.rusling@arm.comv0.8-3 January 25, 1999 JF Projectv0.8-3 December 2000 *フレーム表示* 書は、Linux カーネルの仕組みを知りたい Linux 愛好家のためのものです。これは 内部構造のマニュアルではありません。むしろ Linux で使用されている原理や メカニズムを解説したものであり、Linux の動作原理とはどういうもので、なぜそれ が採用されているのかを説明するものです。 Linux という対象は常に変化しています。書がベースにしているのは現在の安定 版である 2.0.33 のカーネルソースですが、これは個人や法人の大部分で使用されて いるのがこのバージョンだからです。 また、書は自由に配布してもらってかまわないので、一定の条件のもとにではあり ますが、複製や再配

  • UNIXカーネルソースツアー!

    UNIXカーネルソースツアー! ハッカーの皆様、UNIXカーネルソースツアーへようこそ。すべて自由行動となっておりますので、ご自由にお歩きください。 ツアーは巨大なものですので、一括ダウンロードは御遠慮ください。当社のネットワークは一括ダウンロードの負荷には耐えられません。代わりに、 GNU Global ソースコードタグシステムを使って、あなたのコンピュータ上で同じものを生成できます。 ではよい旅を。 現行シリーズ Linux 3.12 RELEASE Linus Torvalds 氏がヘルシンキ大学の学生だった頃に書きはじめたカーネルで、今や世界を席捲しています。通常はGNU オペレーティングシステムの一部として配布されています。 FreeBSD 9.2 RELEASE MacOSX のベースとなっていることでも知られる、4.4BSD起源のオペレーティングシステムです。Yahoo 等の

  • 1