タグ

!tumblr-techとprocessに関するtyruのブックマーク (13)

  • Panoramaは電気分解(Electrolysis)の夢を見るか? - Mozilla Flux

    Mozillaの開発者たちは数年前からFirefoxのマルチプロセス化に取り組んできた(Electrolysisプロジェクト)が、プラグインの別プロセス化を達成した時点でFirefox 4の完成を優先することにしたため、しばらくの間その歩みはゆっくりしたものになっていた。しかし、Products team blog『goals for multi-process firefox』によると、現在では格的な開発が進んでいるという。 上記の記事ではマルチプロセス化がもたらすメリットを紹介しているのだが、それを説明する前に、そもそもマルチプロセス化とは何だろうか。『Firefoxのマルチプロセス化はフェーズ2へ』で書いたように、Webブラウザのユーザーインターフェイス(UI)を表示するプロセス(クロームプロセス)と、Webコンテンツを表示するプロセス(コンテンツプロセス)を分離することが第一歩だ

    Panoramaは電気分解(Electrolysis)の夢を見るか? - Mozilla Flux
  • UNIX上でのC++ソフトウェア設計の定石 (3) - memologue

    鉄則3: マルチスレッドのプログラムでのforkはやめよう マルチスレッドのプログラムで、「自スレッド以外のスレッドが存在している状態」でfork*1を行うと、さまざまな問題を引き起こす可能性があります。「問題」の典型例としては、子プロセスのデッドロックが挙げられます。問題の詳細を把握しないまま、マルチスレッドのプログラムで不用意にforkするのはやめましょう! 何が起きるか 実例から見てみましょう。次のコードを実行すると、子プロセスは実行開始直後のdoit() 呼び出し時、高い確率でデッドロックします。 void* doit(void*) { static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&mutex); struct timespec ts = {10, 0}; nanoslee

    UNIX上でのC++ソフトウェア設計の定石 (3) - memologue
  • disownコマンド - Do You PHP はてブロ

    昨日知りましたw disownはバックグラウンドプロセスをデーモン化するbashの組み込みコマンドで、引数に"%"+ジョブ番号を指定します。 以下、使用例。 $ cat tmp.php <?php while (true) { sleep(10); file_put_contents('/tmp/tmp.php.log', date('YmdHis'). PHP_EOL, FILE_APPEND|FILE_TEXT); } $ php tmp.php & [1] 31993 $ jobs [1]+ Running php tmp.php & $ disown %1 $ jobs $これでターミナルを終了させても大丈夫。 再度ターミナルで繋げて、pstree確認してみると、initプロセスの子プロセスになっているのが分かります。 init(1)─┬─atd(1819) : ├─mingett

    disownコマンド - Do You PHP はてブロ
  • Linux の nice / renice コマンドを覚えた

    毎月15日は自宅サーバのバックアップが実行される日です。バックアップには20時間ほどもかかってしまうわけで、実は15日は凄くレスポンスが低下する日です。ロードは通常時の約3倍の3〜5程度になり、Disk I/O のパフォーマンスが極端に劣化します。 もっともその原因はバックアップの手法が悪いのです。 小さい HDD にバックアップしているために、元々の HDD を tar cvfz 使って圧縮しながらバックアップしているので CPU も凄く喰うんです。こりゃ HDD を増設して差分でバックアップする rsync 方式に変えなきゃ・・・と思いつつ今月もいつもの日が来てしまいました。 さて、今日はいつもにもまして shell での応答が遅いのでプロセスの優先度を変更することにしました。コマンドは覚えてなかったけど優先度設定コマンドがあることは知っていたので調べてみました。 renice - 実

    tyru
    tyru 2011/05/04
    今日初めてreniceを使ったんだ、父さん
  • 仮想デバイスドライバを利用したプロセス間通信について : tutorialog

    仮想デバイスドライバを利用したプロセス間通信について September 11, 2006 Posted by butcher in : C, Operating System , trackback 仮想デバイスドライバを利用したプロセス間通信について説明します。といってもよくわからないと思うので、ちゃんと説明します。 Unixでプロセス間通信というと、ソケットを使ったもの、パイプを使ったもの、共有メモリを使ったもの等がありますが、それぞれ長所・短所があると思います。 ものすごく簡単に言うと、 ソケットでは、 複数マシン間での通信が可能 通信処理のオーバーヘッドが大きい(コネクション開始・終了処理も含め) パイプでは、 ソケットより通信処理のオーバーヘッドが少ない 親子関係のプロセスに限定される 共有メモリでは、 シンプルで高速 書き込み・読み取りの同期をとるのが難しい 等が

  • 32bit プロセスは 64bit プロセスを見つけられない - Cube Lilac

    所用で「あるプロセスから別のプロセスを終了させるプログラム」を書いていました.終了させる部分の関数は以下のような感じ. #include <string> #include <vector> #include <windows.h> #include <tchar.h> #include <psapi.h> #pragma comment(lib, "psapi.lib") namespace process { std::size_t kill(const std::basic_string<TCHAR>& name) { std::size_t result = 0; std::vector<DWORD> processes(256, 0); DWORD procbytes = 0; while (1) { if (!::EnumProcesses(reinterpret_cast<D

    32bit プロセスは 64bit プロセスを見つけられない - Cube Lilac
  • Posix共有メモリ - s-kita’s blog

    Posix.1では、無関係なプロセス間でのメモリ共有を行う方法を2種類提供している。 1.メモリマップファイル(memory-mapped files): ファイルをopenし、結果のファイルディスクリプタをmmapでプロセスのアドレス空間にマップする 共有メモリオブジェクト(shared memory objects): shm_openでIPC名をオープンし、返されたディスクリプタをmmapでプロセスのアドレス空間にマップする shm_open関数、shm_unlink関数Posix共有メモリの使用には、2ステップの処理が必要。 1.名前引数を与えてshm_openを呼び出す 2.mmapを呼び出し、共有メモリを呼び出したプロセスのアドレス空間にマップする shm_openで用いた名前引数は、このメモリを他のプロセスから共有する場合に用いる名前になる。 #include <sys/mm

    Posix共有メモリ - s-kita’s blog
  • それ Proc::Guard 0.04 でできるよっていう話 - tokuhirom's blog

    http://d.hatena.ne.jp/antipop/20101130/1291112500 Proc::Guard をつかってこういう風にするのはどうか。$worker_guard ってのが Scope::Guard あるいは AnyEvent の guard みたいなかんじになってます。スコープをぬけるときに、自動的にプロセスを kill した上で wait して、ゾンビプロセスをのこさない設計になっています。 proc_guard(sub { }) の中は、子プロセスの中でうごくっていうのがキモですね。 use strict; use warnings; use Test::TCP; use Test::More; use Proc::Guard 0.04 qw/proc_guard/; use Gearman::Worker; use Gearman::Client; tes

  • nohup と disown | 変なヤバいもんログ

    Posted on 2006年11月23日 Posted by ちゅう コメントする Posted in Development Tags: Linux ログアウトしたときもプロセスを継続するためには nohup か disown をしてあげれば良いみたいです。nohup は、コマンドを実行するときに nohup コマンド ってやればおk。disown は、一旦 Ctrl + z でプロセスを停止して、 disown %[ジョブ番号] とすれば、自分のもとからプロセスが離れるのでログアウトしても安心。Screen っていう、再ログイン後も続きからはじめられるらしい便利なものがあるけど、未だに試せていない(´・ω・`) 先ほど、卒研で90000行のデータが入ったMySQLのふたつのテーブルをJoinして処理しようとしたら、1時間たってもなんもおきなかった。同じDNAについて分析した二つの値が

    nohup と disown | 変なヤバいもんログ
    tyru
    tyru 2010/11/19
    disownしらんかった
  • 親プロセスが終了するとそのプロセスから呼ばれた子プロセスも停止する?

    印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます はじめまして。 親プロセスが終了するとそのプロセスから呼ばれた 子プロセスも停止するという認識は正しいでしょうか? というのも、あるシェルスクリプトを"kill -9"コマンドで強制終了させたのですが、そのシェルスクリプト内のコマンド(sleepコマンドです)は終了せずに残っていたので(psで確認しました)、??という感じでした。 さらにそのsleepコマンドの親プロセスが1(init?)になっていました。 色々とWEB上で調べてみたのですが、この動作について の記述を見つけることができませんでした。 どなたかご存知でしたら是非ご教授下さい。よろしくお願いします。 親プロセスが先に死ぬと子プロセスはinitプロセスの養子になるというのは

    親プロセスが終了するとそのプロセスから呼ばれた子プロセスも停止する?
  • All About Spawn

    Blogged by Ujihisa. Standard methods of programming and thoughts including Clojure, Vim, LLVM, Haskell, Ruby and Mathematics written by a Japanese programmer. github/ujihisa Spawn = Fork + Exec, but works also on platforms which don't support fork. The usage of spawn is often said to be cryptic. Here I'll describe common cases. system('ls') pid = spawn(['ls', 'ls']) Process.wait(pid) system('ls .'

  • PHP は制御に向かない? — 旧メイン・ブログ | Baldanders.info

    PHP でどハマりしてしまったので, 覚え書きとして残しておく。 以前「PHPCGI モードで動かす」というのをやったのだが, そもそもこれをやりたかったのはマルチプロセスで非同期制御をやりたかったからだ。 しかし実際にやってみるとどうもうまくいかない。 最初はこんな感じで普通に pcntl_fork を使っていたのだが, $pid = pcntl_fork(); if ($pid == -1) { //fork 失敗 return -1; } else if ($pid) { //親プロセス return 0; } else { // 子プロセス //非同期制御の呼び出し asynchronousControl(); exit(0); } Web 上でこれを動かすと, どうも子プロセスが終わるまでサーバサイドから制御が返ってこない感じである。 んで, いろいろ調べたら, 子プロセス

    PHP は制御に向かない? — 旧メイン・ブログ | Baldanders.info
    tyru
    tyru 2010/03/22
    phpでは標準(入力|出力|エラー出力)を閉じれないという話
  • プロセスのCPU利用率はpsだけだと正確に見れない - うまいぼうぶろぐ

    そういえば前に調べてすっかり忘れていた。 http://d.hatena.ne.jp/hogem/20090603/1243957927 man psにあるように 現在のところCPU使用率は、プロセスの生存期間中に実行に利用した時間のパーセンテージで表される。これは理想的ではなく、psが準拠すべき標準に準拠していない。CPU使用率は足し合わせても正確に100%になることは少ない だもんでpsで表示される%cpucpu利用時間 / プロセス生存時間 なので、psで表示される値は単位時間あたりの平均利用率。 top,sysstat,vmstat,mpstatあたりだとOS全体だけど、瞬間的なCPU利用率はわかる。 プロセスごとの瞬間的なCPU利用率は、どうやって調べるんだろう? 追記 http://d.hatena.ne.jp/ikeas/20091130/1259595249 この人も同

    プロセスのCPU利用率はpsだけだと正確に見れない - うまいぼうぶろぐ
  • 1