Content-Length: 342919 | pFad | http://b.hatena.ne.jp/yass/process/
$ cat /etc/os-release NAME="Ubuntu" VERSION="14.04.4 LTS, Trusty Tahr" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 14.04.4 LTS" VERSION_ID="14.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" $ cat /proc/1/sched init (1, #threads: 1) ------------------------------------------------------------------- se.exec_start : 176
Linux Advent Calendar 2014 こんにちは、hiraku_wfsです。 今年はLinux KernelのDocumentation/scheduler/sched-design-CFS.txtを和訳してみました。 過去には2009年頃にsyuu1228さんが機械翻訳ベースの和訳を試みています(sched-design-CFS.txtの和訳 - syuu1228's blog)が、今回v3.18-rc7のものを訳してみます。 ところどころ(ちょっとやりすぎかもしれない)意訳を入れています。 �場所によっては原文を見た方が分かりやすい箇所がいくつかあるので、原文と併記しています。 (やっぱり翻訳の専門家ではないので日本語でどう表現したものか悩んだりと結構大変でした...) 原著作者: Ingo Molnar ============= CFS Scheduler CFSス
This article is also available in Japanese, イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 This article is based on a presentation I gave earlier this year at OSCON. It has been edited for brevity and to address some of the points of feedback I received after the talk. A common refrain when talking about Go is it’s a language that works well on the server; static binaries, powerful concurrency, and high per
Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 よりも大きく設定することで prefork する実装になってます。POEシングルスレッドではアプリケーション内で発生するブロックを避けることが難しいのでそのための実装じゃないかなと思います。 ところでこの Catalyst POE エンジン、prefork の実装はどのように行っているかというと POE から prefork と名の付いたイベントが発生するとおもむろに子プロセスを生成する、というのもの。複数の
「シェルで1行ずつファイルから読み込む - あしのあしあと」に引き続き、「シェルで1行ずつファイルから読み込む」シリーズの2回目。今回は、ファイルディスクリプタ(ファイル記述子)、パイプ(パイプライン)、リダイレクト(リダイレクション)のおさらい。今さら感は満載だが、まぁよしとする。なお、本エントリで用いている図については、書籍「UNIXネットワークプログラミング入門」を参考に作成した(読んだのは7年前で、今手元に本がないのだが、確かこんな絵が書いてあったと思う)。 まず、簡単な凡例を。 で、シェルやコマンドのプロセスが起動した時だが、次の絵のような状態になっている。 プロセスには(すぐに利用可能な)0番、1番、2番のファイルディスクリプタが用意されていて、それぞれ画面と紐づいている(にょろっとした矢印、方向も大事)。0番を「標準入力」、1番を「標準出力」、2番を「標準エラー出力」と呼ぶ(
This article has a followup. Linux has an elegant and beautiful design when it comes to threads: threads are nothing more than processes that share a virtual address space and file descriptor table. Threads spawned by a process are additional child processes of the main “thread’s” parent process. They’re manipulated through the same process management system calls, eliminating the need for a separ
Java で外部プロセスを起動する際は ProcessBuilder クラスを使いますが、 たまに処理が戻ってこない場合があります。 そんな場合に原因として考えられるのは、標準出力または標準エラー出力にバッファが溜まってしまっているという理由です。 例えば以下のコードの場合、標準エラー出力のバッファがいっぱいになっていた場合は proc.getInputStream() から処理が返って来なくなります。 String[] cmds = {"./foo.sh"}; ProcessBuilder pb = new ProcessBuilder(cmds); Process proc = pb.start(); String str; BufferedReader brstd = new BufferedReader(new InputStreamReader(proc.getInputStre
UNIXの基本をなすプロセスやシグナルなどを分かりやすく解説した技術ドキュメント「Process Book」がGitHubにて公開されています。 同ドキュメントは、プロセスの生成、プロセスとファイル入出力、ファイルディスクリプタ、preforkサーバーの作り方、ゾンビプロセスと孤児プロセス、シグナルとkill、プロセスグループとフォアグランドプロセスといった話題を解説するドキュメントで、GitHubのreleasesディレクトリにはPDF、epub形式のファイルも格納されています。 UNIX環境でプログラムを開発する際に役立つだけではなく、普通のユーザーとしてターミナルを使ってコマンド操作を行う際にも役に立ちそうな内容だと思います。
今日もモツ鍋を堪能されていた模様の [twitter:@hasegaw] さんが Linux のプロセスのアクティビティを追跡してグラフ化するツールを Perl + R で作られたということで早速使ってみました。 プロセスがユーザーモードでCPUを使えているのか、I/O待ちになっているのかといった傾向を分析することができます。Oracle Database はCPUを使えているのか、どんな理由で待機している(CPUを使えていない)か見ることができるよう実装されていますが、そんなものはないプログラムでも /proc ファイルシステムを参照してプログラムの外側からボトルネック分析が可能になります。素晴らしい! こんな感じのグラフができます。 ツール prociostat.pl プロセスのCPU使用率、I/Oバイト数、I/O待機時間*1を秒間隔でCSVに記録する Perl スクリプト*2 情報ソ
ソフトウェア開発の世界には、様々な法則があります。 遅れたプロジェクトに人数を追加しても、さらに遅らせることになるという「ブルックスの法則」は有名ですね。他にも、ソフトウェアの構造は、それを作った組織の構造が反映させるという「コンウェイの法則」などなど。(参考) 最近、ソフトウェア開発を通じて感じていることは、ソフトウェアの仕様を決める人の数は、ソフトウェアをプログラミングする人の数と同じだけ必要なのではないか、ということです。 そこで、この記事ではこれを「人数等価の法則」として考えてみることにしました。 balance / hans s これまで考えられてきた開発にかかる人数の感覚 ソフトウェア開発には、何を作るかを考えるという段階があって、どう作るかを考えてプログラミングするという段階があります。それを2人以上の人間で役割分担するとしたら、その間に入るものが「仕様」となります。 「仕様
psで使うオプションについてつらつら調べたので、メモ。 psのオプションには、UNIXオプション(ハイフンで始まるもの)とBSDオプション(ハイフンを付けないもの)の2つの流派があり、それに加えてGNU psではハイフン2つで始まるロングオプションが使える。 このバージョンの ps が受け付けるオプションにはいくつかの種類がある。 1 UNIX オプション。まとめることが可能で、前にはダッシュを置かなければならない。 2 BSD オプション。まとめることが可能で、ダッシュを使ってはならない。 3 GNU ロングオプション。前に二つのダッシュを置く。 man ps より おそらく一番メジャーなのは、「ps -ef」(UNIXオプション)と「ps aux」(BSDオプション) それぞれの出力例は以下の通り。 $ ps -ef UID PID PPID C STIME TTY TIME CMD
新人エンジニアとの読書会でシグナルの話が出た時に色々知識が曖昧なことに気づいたので読んだ。(Spyglass についてはまだ触っていない) 社内の別の読書会にこれの原著を読むものがあったんだけど、 当時 Ruby や UNIX について知識がなさ過ぎたり英語読むのに少しつらみがあったり そもそも途中から参加していなかった。覚えていたのはゾンビプロセスの語感と内容が重要そうだったってことくらい。 今回は英語学習より内容の速習を求めたので、翻訳版を読むことにした。 以下は読書感想文です。 プロセス、カーネル、システムコール この本はプロセスとそれを取り巻く技術についてそれぞれかなり基礎的なことから書かれており、UNIX について然程知識がなくとも問題なく理解し読み進められる。 自身ではプロセスは親子関係やPIDについて知っている程度で、5章のファイルディスクリプタや 10章の終了コード、11章
GC処理が発生するタイミング それでは、そのCG処理は、いつのタイミングで発生するのだろうか。図4を見てみよう。 世代の新しいオブジェクトを格納する「Javaヒープ領域」は、必要としないオブジェクトが生成される一時的な領域なので、常に新しいオブジェクトがnew()され続け、また短時間でいらなくなったメモリー領域の残骸が発生し続ける領域だ。したがって、この領域では、頻繁にGC処理が発生することになる。 このGC処理を行うには、先に述べた領域管理テーブルを参照する必要があるので、この管理テーブルに格納されている「エントリー数」が少なければ少ないほど、GC処理にかかるオーバヘッドは少なくなる。このようにエントリー数を少なく維持しようとすると、GC処理の頻度を上げるほかないのだ。このため、新しい世代用の管理領域は、頻繁にGCが発生するので、JVMでは、優先順位の低いスレッドとして実装されている。こ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
Fetched URL: http://b.hatena.ne.jp/yass/process/
Alternative Proxies: