タグ

スレッドとカーネルに関するiwwのブックマーク (7)

  • リード・コピー・アップデート - Wikipedia

    リード・コピー・アップデート(read-copy-update、RCUと略記)とは、オペレーティングシステムにおいて一種の排他制御[note 1]を実装する同期機構であり、リーダー・ライターロック(英語版)の代替手段として使われることがある。参照において待ち状態が生じず、極めてオーバーヘッドが低い。しかしRCUにおけるデータ更新は、既存の参照者のために古い版のデータ構造を保持しつつ行うため、時間と空間(メモリ)をより多く必要とする。古い版のデータ構造は、既存の参照者が全てアクセスを完了した後で回収される。 概要[編集] RCUでは「参照側クリティカルセクション」という概念があり、通常 rcu_read_lock() と rcu_read_unlock() で挟まれた部分がそれにあたる。参照側クリティカルセクション内にない文は「不活性状態」と呼ばれ、RCUで保護されたデータ構造への参照を保持

  • Man page of SEM_OVERVIEW

    Section: Linux Programmer's Manual (7) Updated: 2020-06-09 Index JM Home Page roff page 名前 sem_overview - POSIX セマフォの概要 説明 POSIX セマフォを使用すると、プロセスやスレッド間でその動作を 同期させることができる。 セマフォは整数であり、その値は決して 0 未満になることは許されない。 セマフォに対してできる操作は 2 つである: セマフォ値を 1 増やす (sem_post(3)); セマフォ値を 1 減らす (sem_wait(3))。 セマフォの値がすでに 0 の場合、セマフォ値が 0 より大きくなるまで sem_wait(3) 操作は停止 (block) する。 POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前なしセマフ

    iww
    iww 2018/08/21
    プロセス間でのセマフォ
  • システム全体で使えるスレッド数の最大値を上げる - そ、そんなことないんだから!

    システム全体での最大プロセス数(プロセス数+スレッド数)は、threads-max の値で決まる。(Linuxカーネルからは、スレッドもプロセスのように見える) この値を超えるプロセスは生成できないので必要に応じて十分な値を取る必要があるかもしれない。ただし、threads-maxのデフォルトの数値はメモリ量に合わせて起動時に計算された値となっている。ちなみにうちの環境では以下の値だった。 $ cat /proc/sys/kernel/threads-max 15871とりあえず、テストとして値を3倍にしてみる。変更方法は、/etc/sysctl.conf に以下のように追記する。 $ sudo vi /etc/sysctl.conf ... # システム全体での最大プロセス数 kernel.threads-max = 47613 ← 追記 編集後は以下のコマンドで設定を反映させる。 $

    システム全体で使えるスレッド数の最大値を上げる - そ、そんなことないんだから!
    iww
    iww 2012/06/13
    『threads-maxのデフォルトの数値はメモリ量に合わせて起動時に計算された値となっている。』
  • Linuxでの最大スレッド数:プログラマー社長のブログ:オルタナティブ・ブログ

    今日も昨日に続き、高性能ハード・ネットワーク環境で試行錯誤していました。今日、まずクリアーしたかったのが、スレッド数の壁です。多数のTCP/IPコネクションを扱うプログラムの場合、作りやすさから、スレッドを多用することがほとんどなのですが、昨日やってみた感じだと、OS全体で32767個くらいで、「Cannot allocate memory」エラーが発生していました。 Linuxの場合、カーネルのパラメーターを調整することで、様々な上限値を変えることができるのですが、パラメーターの数が多く、どれがどの場合に有効かがわかりにくいのです。 結局は、kernel.threads-maxと、kernel.pid_max、vm.max_map_countを増やせば、スレッド数が増やせた、という感じでした。 「 sysctl -w kernel.threads-max=600000 sysctl -w

    Linuxでの最大スレッド数:プログラマー社長のブログ:オルタナティブ・ブログ
  • pdflush - Linuxカーネルメモ

    1. 概要 pdflushはページキャッシュ(ディスクキャッシュ)上のDirtyページをディスクへ書き戻す(WriteBack)のに使われるカーネルスレッド。 2. 構造 pdflushの構造は図1のようになっている。 図1 pdflushの構造 3. 解説 3.1 pdflush pdflushの処理のメインは__pdflush()。__pdflush()では、pdflush_operation()によりジョブが投入されてWakeupされると、自分のジョブ管理用構造体struct pdflush_workから登録されているジョブの処理ルーチン(.fn)を呼び出して、WriteBack処理を行う。処理が終わるとまたSleepする。 pdflushカーネルスレッドはシステム内に複数個存在する。スレッド数はWriteBackの処理量に応じてMIN_PDFLUSH_THREADS(2)〜MAX_

  • pdflushを捕捉したい、が捕まらない>< - niwaka diary

    I/OI/Oとかストレージが苦手分野なので、理解を深めるためにちょい検証。今回はpdflushについて。やりたいこと"ps aux | grep pdflush"して、pdflushのカーネルスレッドを捕捉したい。「あぁ、いまpdflushが起動してキャッシュをディスクにガリガリ書き込んでるんだなぁ〜」って瞬間を目視したい。 pdflushとは。そもそもOSにおけるI/Oとはそもそもの話ですが、OSレイヤーでのI/Oから復習すると。。基的なブロックI/Oの流れとしては下記のようになる、はずです。アプリケーション等のプロセスがライブラリ経由でwriteやreadシステムコール(I/O要求)を発行カーネルはプロセスよりI/O要求を受け、ファイルシステム経由でメモリ上のファイルキャッシュにデータを書き込む書き込んだデータはメモリ上にしかないので、定期的にデーモンがメモリ上のキャッシュをデバ

  • エンタープライズ向けに刷新されたカーネル・コア

    マルチスレッド対応の強化 ■vcache vcacheは、仮想アドレスと物理ページの対応付けの変更をコールバック関数によって通知する仕組みである。 後述するfutexの実装に使用されるため、カーネル2.6に追加された。 ■futex(Fast Userspace Mutexes) futexは、伝統的なUNIXカーネルで使われているsleep/wakeupとよく似た同期機構をユーザーランドに対して提供する。 主にNPTL(Native POSIX Thread Library)などのライブラリの実装に使われるため、アプリケーションから直接利用することはあまりないと思われるが、POSIX ThreadはJavaスレッドの実装などにも用いられており、同期処理を多用するアプリケーションには利益があるだろう。 futexシステムコールの主な機能はFUTEX_WAITとFUTEX_WAKEである。

    エンタープライズ向けに刷新されたカーネル・コア
  • 1