タグ

プロセスに関するrin51のブックマーク (16)

  • LowMemoryKiller 〜AndroidのActivityが破棄される仕組み〜 - Qiita

    この記事は、LIFULLその2 Advent Calendar 2020の23日目の記事です。 今回は、Android低レイヤーな話を取り上げてみようと思います。 具体的には、OOM Killerでプロセスがkillされるのを未然に防ぐLowMemoryKillerの仕組みについてです。 ネイティブアプリの開発は、よりメモリの事を意識した開発が必要だなと日々感じていたので、もっと低いレイヤーで何が行われているかをちゃんと理解したいと思ったのがきっかけで、勉強してきた内容になります。 読んでいただけたらこの辺の内容を理解できる内容になっていると思います。 LowMemoryKillerの仕組み Activityが破棄される基準 onSaveInstanceState()でBundleに保存するデータは実際どこに保存されているのか Androidエンジニアじゃなくても、Androidの世界を

    LowMemoryKiller 〜AndroidのActivityが破棄される仕組み〜 - Qiita
    rin51
    rin51 2021/07/01
    艦これアプリがいつのまにかkillされてるのはこういうことか
  • プロセスのVSZ,RSSとfree,meminfo挙動を実機で確認 - のぴぴのメモ

    1.はじめに 1-1.この記事の要旨 1-2.(予習)メモリに関する指標とlinuxのメモリ挙動について 2.検証環境と検証方法 2-1.検証環境 2-2.検証方法 2-3.測定方法 (1)psコマンドによるVSZ,RSS情報の取得 (2)freeコマンドとmeminfo情報の取得 3.結果 3-1.全体の結果 3-2.プロセスのVSZ/RSS挙動 ポイント① malloc()した時の挙動→VSZのみ増加 ポイント② 1回目のデータread時→RSSは増えない ポイント③ データwrite→RSSが増加する 3-3.システムワイドな挙動(freeコマンド/meminfo) ポイント① malloc()した時の挙動→usedもAnonymousPageも増えない ポイント②1回目のデータread時→変化しない。 ポイント③ データwrite→used上昇、AnonymousPage上昇 4.

    プロセスのVSZ,RSSとfree,meminfo挙動を実機で確認 - のぴぴのメモ
    rin51
    rin51 2021/04/06
    rssやvmsなど
  • システムコールトレーシング: 吸い込まれる標準入力を観察する - にゃみかんてっくろぐ

    Linuxその2 Advent Calendar 2020 18 日目の記事です。 「スクリプト書いてたんですが、なぜか途中で止まるんです」と言われた。 止まっている様子(シンタックスハイライトが綺麗でないので画像で) 確かに yarn gen で止まっている。 yarn start も date も実行されていない。終了コードは 0 で、正常だ。 「ファイルとして実行してみて」と伝えた。 最後まで実行される様子 最後まで実行された。 雰囲気で「たぶん 標準入力が吸い込まれている」と雑返答をしてしまったが、ここでその正体を明らかにしておきたい。 1. strace でシステムコールを記録する 2. システムコールから挙動を観察する 2-1. ヒアドキュメントの書き出し 2-2. 標準入力をヒアドキュメントに差し替え 2-3. bash を実行 2-4. 標準入力を読み込み 2-5. dat

    システムコールトレーシング: 吸い込まれる標準入力を観察する - にゃみかんてっくろぐ
  • よく知らないアプリケーションの性能と戦わないといけないときの防衛術(前編) - Qiita

    よく知らないアプリケーションの性能と戦う、という状況 SNSにキャンペーン載せたらバズってサイトがずっと503なんです、なんとかなりませんか? バッチがいつもの時間に終わらないんですけど、急ぎ見てください! みたいな連絡を、そろそろ帰るかと思った21時とか明け方5時とかに電話が鳴って受けることって、そこそこあると思うんです。 私が設計したわけでもなく開発したわけでもなく、レビュー参加とかで辛うじて全体は分かるけど、いまからソース見る時間もないし、開発した方は性能面の対処が覚束ない。突然性能面で火を噴いてなぜか自分が召喚されて2~3時間でどうにかしたい、という闇な状況にどういうふうに対応していたっけ自分、というのを経験則100%で書いてみようと思います。 この前編は道具の紹介(OS編)、中編は道具の紹介(Java)、後編は道具の紹介(PostgreSQL)です。 中編 → https://q

    よく知らないアプリケーションの性能と戦わないといけないときの防衛術(前編) - Qiita
  • A non-blocking read on a subprocess.PIPE in Python

    I'm using the subprocess module to start a subprocess and connect to its output stream (standard output). I want to be able to execute non-blocking reads on its standard output. Is there a way to make .readline non-blocking or to check if there is data on the stream before I invoke .readline? I'd like this to be portable or at least work under Windows and Linux. Here is how I do it for now (it's b

    A non-blocking read on a subprocess.PIPE in Python
    rin51
    rin51 2020/11/05
    asyncでsubprocess
  • コンピューター:C言語講座:fork,exec,pipeについて

    コンピューター:C言語講座:fork,exec,pipeについて このテーマはどちらかというとUNIX系の話題になってしまうのですが、PC系ではDOSの時代にはマルチタスクができませんでしたので、平行には走れませんでしたが、C言語の処理系独自の関数がたくさんありました。WindowsになってからはUNIX系と似てきましたが、まだ少し違うようです。 自分で作成したプログラムから他のコマンドを実行したい、ということは良くあることだと思います。例えば、ディレクトリーの中身を簡単に得たい場合などはUNIXではlsコマンドを実行させて、結果をもらうのが簡単に思い付くと思います。とくにUNIXのコマンドはそのように組み合わせて使いやすくできていて、必要な情報だけを明確に返答するコマンドがほとんどです(その分、初心者が自分でコマンドを使う時に不親切なのですが)。 system() 大抵の人が上記のような

  • プロセスを実行した時の環境変数を知りたい(Linux) - Qiita

    Linuxでプロセスを実行したときの環境変数を知りたい場合は、/proc/[pid]/environファイルで確認できます。 ただ、各項目がnullで区切られているので、catなどで表示しても見にくいです。 以下のコマンドで見やすくなります。 その1(stringsを使う)

    プロセスを実行した時の環境変数を知りたい(Linux) - Qiita
  • バックグラウンド実行nohupとdisownの違い - Qiita

    コピペ http://za.toypark.in/html/2007/06-29.html 以下引用 nohupは良く使っていた。最近になってdisownを知った。違いは、プロセスの起動前に使うのがnohup、起動後に使うのがdisown。これだけだと判りにくいので、例を考えてみる。プログラムを作って、起動させる。

    バックグラウンド実行nohupとdisownの違い - Qiita
  • Fork爆弾 - Wikipedia

    Fork爆弾(フォークばくだん)とは、コンピュータシステムへのDoS攻撃の一種で、新たなプロセスを生成するfork機能を使ったものである[1]。Fork爆弾はワームやウイルスのようにコンピュータからコンピュータへ広がることはない。これは、コンピュータ上で同時に実行可能なプログラム数あるいはプロセス数に制限があるという前提に依存したものである[2]。このような自己複製プログラムを wabbit、bacteria、rabbit programs などと呼ぶ。wabbit は単に自己複製するだけでなく、悪意ある副作用を持つようプログラムすることもできる[3]。 詳細[編集] fork爆弾のコンセプト。プロセスは再帰的にforkし、サービス停止状態に陥らせる。 Fork爆弾は非常に高速に多数のプロセスを生成して、コンピュータのオペレーティングシステムの管理するプロセスのリストを埋め尽くす。プロセス

    Fork爆弾 - Wikipedia
  • 適当なスクリプトをデーモン化するのにSupervisorが便利 - id:anatooのブログ

    適当なスクリプトをデーモン化しようと思った時の典型的な要件が以下であるが、この記事でも紹介したpython製のプロセス管理ツールであるSupervisorを使うことによって解決できる。 プロセスの生死の監視する プロセスが死んだら勝手に再起動する 標準出力やエラー出力のログを取る 場合によっては複数プロセスを起動したい プロセスのステータスを簡単に確認したい この記事では、プロセス管理ツールSupervisorの導入を簡単に紹介する。 インストール easy_installからインストールできる。そもそもeasy_installが入ってない場合は以下みたいにインストール。 $ curl -O http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.pySupervisorをeasy_installからインストールしま

  • UNIX 6th code reading - fork, exec, breakシステムコール - やる気のないブログ(A boring diary)

    はじめに 今回は12章の続きを追います。 システムコールのfork, exec, breakを見ていきます。 Lionsではexec, fork, breakの順に扱っていますが、fork, exec, breakの順に見ていきます。こちらの方が理解しやすいと思います。 fork & exec system call forkとexecシステムコールはセットで使用されることが多いです。まずはそれぞれの概要を見ていきます。 forkとは forkはプロセスを新たに生成するシステムコールです。内部でnewproc( )を呼び出します。 新しいプロセスはforkシステムコールを呼び出したプロセスのコピーと言えます。ただしpidは新しいid, ppidはforkシステムコールを呼び出したプロセスのpidになります。詳細はnewproc( )の1861-1869あたりや以前のエントリを参考にしてく

    UNIX 6th code reading - fork, exec, breakシステムコール - やる気のないブログ(A boring diary)
  • キヤノン:プレミアムライブラリー デジタルカメラができるまで

    デジタルカメラの仕組みから、キヤノンならではのデジタルカメラづくり、そして最新の環境対策まで紹介します。長年のノウハウと最先端の技術開発、生産プロセスこそが、「デジタルカメラのNO.1」メーカー キヤノンの高画質な写真と高品質な製品を支えています。 制作:2010年6月 デジタルカメラができるまで (12'47'') デジタルカメラの仕組みから、キヤノンならではのデジタルカメラづくり、そして最新の環境対策まで紹介します。長年のノウハウと最先端の技術開発、生産プロセスこそが、「デジタルカメラのNO.1」メーカー キヤノンの高画質な写真と高品質な製品を支えています。 制作:2008年6月 70年歴史映像「A Tradition of Innovation」 (10'08'') 1937年、「世界一のカメラを作りたい。」という熱い想いから始まったキヤノンの歴史。「多角化」「グローバル化」を創

  • Pythonで外部プロセスを起動して出力と戻り値を処理する跡地 - 試験運用中なLinux備忘録・旧記事

    (2017/3/21)記事は「Pythonのsubprocessで外部プロセスの標準入出力と戻り値を扱う」へ移動した。

    Pythonで外部プロセスを起動して出力と戻り値を処理する跡地 - 試験運用中なLinux備忘録・旧記事
  • ログアウトしてもバックグラウンド ジョブを継続する方法

    はじめに SSH 接続で時間の掛かるシェルスクリプトをバックグラウンドで走らせて帰りたいのに、SSH 接続を切るとジョブが死んでしまいます。SSH 接続に限らず目の前の OS からログアウトしたりターミナル エミュレータを終了しても同じ現象が起こります。 この症状は正常です。なぜなら、バックグラウンド ジョブを起動したプロセス(ログイン シェル)が子プロセスである該当のバックグラウンドジョブをハングアップ シグナル( HUP )によって終了させるからです。 シェルスクリプトを起動した親プロセスは子プロセスの終了状態を監視しています。ですからログアウトして親プロセスであるシェルが終了すると子プロセスはゾンビ プロセスとなってしまうので親プロセスとなるシェル(ログインシェル)は子プロセスであるバックグラウンド ジョブを kill ( kill -HUP ) するのです。 nohup コマンド

    ログアウトしてもバックグラウンド ジョブを継続する方法
  • Windows で別のプロセスが使用中ですファイルを消す方法

    Template::ToolKit のファイルキャッシュの拡張子って .ttc を使うことが多いわけですが、この拡張子、実は Windows 上では True Type コレクションっていう特別な意味を持つ拡張子に割り当てられています。特別な意味っつーのは、True Type Font をまとめて1つにしたファイルのこと(多分・・・)を指すって意味なのですが、間違ってダブルクリックでもしようものならそのファイルを Font ファイルを勘違いしてインストールしようとし始めます。 当然 Font ファイルではないのでインストールは失敗するのですが、一度でもインストールを試みると消せないファイルの化けてしまいます。懸想としてもこんなエラーがでます。 「別のプロセスがこのファイルを開いているので、操作を完了できません」 なんて訳のわからないことをほざきます。システムの復元とかレジストリを調査したり

  • 親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎 - シリコンの谷のゾンビ

    デーモンプロセスを作る場合には,教科書によく書かれている2度forkは不要ではないか? ということを以前の記事に書いた. [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - 睡眠不足?! 確かにBSDのdaemon(3) のコードでは,forkは1回しか呼んでいない. 「きっとプレセスがセッションリーダだと不都合があるのだろう.でもなぜ?」 というのがopen questionだった. それに対する答えを「詳解UNIXプログラミング」[1] に見つけた. SVR4においては,この時点でforkを再度呼び,親を終了することを勧める人がいる. 2番目の子がデーモンとして動作する.これは,デーモンはセッションリーダではなく, SVR4の規則 (9.6節) から,セッションリーダでなければ制御端末を取得できない,ということを保証する. あるいは,制御端末を取

    親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎 - シリコンの谷のゾンビ
  • 1