All of Percona’s open-source software products, in one place, to download as much or as little as you need.
All of Percona’s open-source software products, in one place, to download as much or as little as you need.
Tweet お知らせ - 2018.02.22 Linux カーネルはメモリが枯渇した際の挙動を十分に考慮しておらず、メモリの枯渇が原因でLinux システムがハングアップしてしまうことがあるという問題があります。 この問題に当社ソリューション事業部 半田 哲夫が4年半取り組み続けた結果、メモリの枯渇時にハングアップしてしまう処理の多くが修正されました。現時点までの道のりは、以下の資料/動画でご覧いただけます。 資料:https://elinux.org/images/7/73/CELFJP-Jamboree63-handa-ja.pdf(社外サイト) 動画:https://youtu.be/ZznEyf1PN0Q(社外サイト)
アルゴリズムとデータ構造についてOSSから勉強する会 という勉強会に行ってきた。 これは、とある掲示板の書き込みにOSSで使われてるアルゴリズムが書かれている物があって、 これを元に、皆で読み解いて行こうという企画。 カーネル読むという意味でも、アルゴリズムの勉強という意味でも、 とても良い勉強会。 面白かった。 まとめ 自分のチームはセマフォやった。 まあ、色々と不慣れだったし分からない所も多かったが、勉強になった。 以下、発表したメモに加筆した。 概要 セマフォ(semaphore)とは 複数プロセスによるアクセス制御に使われる仕組みの事 任意の個数の資源を扱うcounting semaphoreと、値が0,1しかないbinary semaphoreがある。 今日見たのは前者のcounting semaphore。この話を書いて行く。 ちなみに、後者がMutexになる(同等の機能を持つ
本記事の公開後の2016年7月にはてなにおけるチューニング事例を紹介した。 はてなにおけるLinuxネットワークスタックパフォーマンス改善 / Linux network performance improvement at hatena - Speaker Deck HAProxy や nginx などのソフトウェアロードバランサやリバースプロキシ、memcached などの KVS のような高パケットレートになりやすいネットワークアプリケーションにおいて、単一の CPU コアに負荷が偏り、マルチコアスケールしないことがあります。 今回は、このようなネットワークアプリケーションにおいて CPU 負荷がマルチコアスケールしない理由と、マルチコアスケールさせるための Linux カーネルのネットワークスタックのチューニング手法として RFS (Receive Flow Steering) を
この記事はLinux Advent Calendar 2014の25日目ですヽ(=´▽`=)ノ 今回はLinux Kernel Hack入門編ということで入門的なことを書いてみたいと思います。 まず使用する環境ですけど最近出たばっかのFedora 21のWorkstationにしました。まあ、今回の内容的にはディストリビューションは問わないんですが、多くの人が馴染んでいるであろうfedora系というかパッケージマネージャがyumということでこれにしてみました。 自分は普段Arch Linuxなんですけど、こっちだとkernelのmake install時にちょっとしたスクリプトを書く必要があったりするのもあって、fedoraのほうが手軽かなというのもあります。 カーネルコード・リーディング ブラウザベースでコード・リーディング 読めるソースは大概メインラインのカーネルということになりますが
1. Linuxのプロセススケジューラ (Reading the Linux process scheduler) Copyright Hitachi Ltd. 2014. All rights reserved. 日立製作所 横浜研究所 豊岡 拓 (hiraku.toyooka.gu@hitachi.com) ! Linux 3.15.0版 2. プロセススケジューラに関す るトピックの全体像 プロセススケジューラ スケジューリング・クラス CFS Real-time Copyright Hitachi Ltd. 2014. All rights reserved. Dead-line ロードバランスグループ・ スケジューリング カーネル内 プリエンプション stop idle 省電力 割り込み, スピンロック プロセス/スレッド, 時間管理, 高精度タイマ, tick管理, etc..
サイボウズ・ラボの西尾 泰和さんが「エンジニアの学び方」について探求していく連載の第2回(毎週火曜日に掲載、これまでの連載一覧)。「WEB+DB PRESS Vol.80」(2014年4月24日発売)に執筆した「エンジニアの学び方──効率的に知識を得て,成果に結び付ける」の続編です。(編集部) 文:西尾 泰和 イラスト:歌工房 この連載では「エンジニアの学び方」をテーマにインタビューを行い、どういう「学び方」をしているのか探求していきたいと思っています。第1弾は、富士通のエンジニアとしてLinuxカーネルの開発に参加されている小崎資広さんです。 Linuxカーネルは、ソースファイルだけで3万5000個以上、行数にして1500万行を超える、巨大ソフトウェアです。小崎さんが、どうやってこの巨大なソースコードと戦っているかは、きっと「エンジニアの学び方」の参考になるはずです。
プログラムがセグメンテーションフォルトで不正終了した場合に、GDBで原因 調査するというのはよく聞く話である。しかし、こういったソフトウェア開発 の後行程で使用するだけではなく、前行程でも使うべきである。これは挙動が よく分からないプログラムの動作確認にGDBが有効であるからだ。 今回は特にprint文が動作しない段階のLinuxカーネルの動作をGDBで確認する。 ただし、あくまでQEMU上での動作である為、QEMUでサポートしていないハード やQEMUが再現しきれていないハードの動作部分については未対応である。そう いった場合はICEなどの治具を用いる必要がある。 1. カーネルコンフィグの設定 CONFIG_DEBUG_KERNELを有効にする。 Symbol: DEBUG_KERNEL [=y] Type : boolean Prompt: Kernel debugging Loca
前回は、LinuxのトップのMakefile の一番外のネスト ifeq ($(skip-makefile),) について説明しました。 その内部にさらにわかりにくい部分があります。 トップのMakefile の400行目付近からは以下のようなコードになっています。
Unix V6のpipe()と比べてLinuxのpipe()どう実装しているんですかねーなんて話を最近したのでちょっと見比べてみた。 V6のpipeははじめてのOSコードリーディング 読書会 (15)でやったところなんだけど、俺は風邪ひいて家で引きこもってたので・・・ V6のpipeの挙動は大体こんな感じ。 pipeはルートディスクのストレージ領域を4096B(8ブロック)使用し実現する 4KBのデータ領域はひとつのファイルとして扱われる(inodeが割り当てられる) オンメモリではなくてストレージを経由するが、バッファサイズが小さいのでブロックデバイスのバッファキャッシュが効きやすいようになっている pipeの受け手がデータを読みだす前に他の優先度の高いプロセスがブロックデバイスを使用するとキャッシュが効かなくなる可能性あり でも、データはストレージに書かれているので内容が壊れると言った
Linuxカーネルに興味があるんだけど特に作りたいものってないんだよなーなんて割とあると思う訳です。俺とか。。。 まあ、kernelnewbiesのメーリングリストでもよく見る話題かと思います。この辺なんかもそうですね。 で、そんな時にオススメできるのがkmemleak。カーネルに組み込まれたメモリーリーク検出ツールです。 使い方は至って簡単でカーネルのコンフィグレーションにあるKernel memory leak detectorを有効にしたカーネルを普通に使えばOK。カーネルはメインラインのrcでもtipでもlinux-nextでも何でも良いと思います。 設定の場所はKernel Hacking -> Memory Debugging -> Kernel memory leak detectorにチェックをするのと、 その下のMaximum kmemleak early log ent
UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行
Post navigation ← Previous Home > Web関連 > 開発 > Linux > Linuxカーネルチューニングのメモ Linuxカーネルチューニングのメモ サーバー向けにLinuxカーネルのチューニングを行った際のメモです。 設定内容 今回行った /etc/sysctl.conf の設定内容は書きの通りです。 各パラメータの説明はコメントとして残しておきます。 # 共有メモリの最大サイズ。サーバーの搭載メモリ(1GB)に合わせて変更 kernel.shmmax = 1073741824 # システム全体の共有メモリ・ページの最大数 kernel.shmall = 262144 # システム全体のプロセス数の上限 kernel.threads-max = 1060863 # システム全体のファイルディスクリプタの上限 fs.file-max = 5242880
JUGEMテーマ:Linux 今日はカーネルログレベルについて記載します。 使用しているのカーネルのログレベルは、次のようにして参照できます。 # cat /proc/sys/kernel/printk 4 4 1 7 左からコンソールログレベル、メッセージログレベル、最小コンソールログレベル、デフォルトコンソールログレベルです。 一番左は、シリアル接続したコンソールから出力され、一番右は、telnetなどのリモートコンソールに出力され、 この数値より小さい(数値以下ではない)メッセージログレベルがコンソールに出力されます。 /procインタフェースですから、echoコマンドなどで次のように変更できます。 # echo "4 4 1 4" > /proc/sys/kernel/printk 通常、組み込みカーネルではソースファイル printk.c を変
老いてお体が衰退されておられるなら、お仕事はお兄ちゃんがお引受けされればいいんだよな。でもな、お父さんはお隠れになるまでお父さんなんだよ。我が心の家を潰すきか。糞政治の家お前らが潰れろ。 女系天王について 長女次男を有する我が家系は、次男に引き継いでもらいます。私にとって天王陛下は、我が心の家である日本家のお父さんで、日本人は兄妹、皇太子は長男のお兄ちゃん。そして次世代の日本人は甥/姪で、幸せの青い鳥は、お婆さんのために探した故の成果で、故に私は、甥/姪のためにとの思いが今の生きる力となっている。おかげでカラスが青く見えもする。これもお父さんである天王陛下のおかげです。幼い頃兄弟喧嘩をしたりもしました。女系天王を称賛する政治家/コメンテータおよび毎日新聞記者を殴ってやりたいは。
kgdbはLinux 2.6.26 から統合されたカーネルのデバッグ機能です。使った感じとしては、gdbサーバをカーネルが提供しているような雰囲気です。カーネルモジュールを書いていて厄介なバグに出会ったので、導入してみるに至りました。以下ではその導入方法について述べます。 おおまかな手順 おおかまな手順は以下の通りです。 kgdbをサポートしているカーネルを用意する。 boot時オプションでkgdbを使うように指示する。 ターゲットのvmlinuxをgdbクライアントにコピーする リモートからターゲットにつないでみる kgdbをサポートしているカーネルを用意する kernel.orgなどから2.6.26以降のカーネルを落としてきて、make oldconfigした上でmake menuconfigし、Kernel hackingの項目を開き、kgdbをオンにしてカーネルをビルドします。多く
Linux Kernel(2.6)の実装に関するメモ書き 書き殴っているので書き方/内容にムラあり。 3.6系に関する記述は【3.6】と記載。 カーネル プロセス プロセスのBlockとWakeup プロセスの優先度 コンテキストスイッチ プリエンプション スケジューラ RunQueue WaitQueue WorkQueue 例外処理 割り込み処理 ページフォルト ページフォルト - 個々のハンドラ ソフト割り込み システムコール 排他制御関連 モジュール 64bit環境での32bitプロセスの動作 メモリ管理 アドレス空間 アドレス空間の管理 カーネル空間のメモリマップ 64bitでのアドレス空間 HighMemory kmalloc,vmalloc 物理ページ管理 スラブアロケータ Rmap proc/meminfo 空きページの確保 kswapd Swap Swap - Swap領
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く