SlideShare a Scribd company logo
USP 友の会・シェル芸勉強会 LT - 2014/02/15

Shell で制限付き並列処理をしよう
日本 GNU AWK ユーザー会
斉藤 博文
hi_saito@yk.rim.or.jp
@hi_saito
Page 1

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

なぜ制限を付けるのか?
 ImageMagick で 1,000 枚の PNG 画像から
アニメーション GIF を並列処理で作成。
 メモリを消費してしまい、スワップで操作
不能に陥る。orz
 何でこんなことをしていたかは秘密で
す。w

何らかの制限を付けないと同じミスが出る
Page 2

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

Shell で並列処理
 bash 前提なので、数値演算は (( と )) で C
言語っぽく。
for (( i = 1; i <= 1000; i++ )); do
sleep 2 &
done

処理内容によっては大いに不安が残る
Page 3

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

ここで問題!
 メモリを無視して指定ジョブ数だけジョブを
投入する?
 コア数を無視してメモリを消費しきれるだけ
ジョブを投入する?

どちらがいいのだろうか?
Page 4

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

ジョブ数に制限をかける
MAX_JOBS=10

for (( i = 1; i <= 1000; i++ )); do
sleep 2 &
CJOB_NUM=$(( $(ps --ppid $$ | wc -l) - 1 ))
while :; do
CJOB_NUM=$(( $(ps --ppid $$ | wc -l) - 1 ))
if (( ${CJOB_NUM} < ${MAX_JOBS} )); then
break
fi
done
done

本当に CPU 律速しているのだろうか?
Page 5

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

メモリに制限をかける
MEM=$(free -b | awk '/Mem:/ {print $2}')
MAX_MEM=$(awk '{print int($0 * 0.3)}' <<<${MEM})
for (( i = 1; i <= 1000; i++ )); do
sleep 2 &
CJOB_MEM=$(ps -o rss --ppid $$ | awk 'NR>1 {s+=$0} END{print s}')
while :; do
CJOB_MEM=$(ps -o rss --ppid $$ | awk 'NR>1 {s+=$0} END{print s}')
if (( ${CJOB_MEM} < ${MAX_MEM} )); then
break
fi
done
done

いわゆる CPU バウンドな処理
Page 6

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

良く使う並列処理
 xargs
 ジョブ数のみの指定
 make
 ジョブ数と Load Average の指定が可能

メモリに制限をかけるようなものってないもの
か?
Page 7

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

まとめ
 ジョブ数やメモリに制限をかけるような Shell
スクリプトがあまりなかったので作ってみた
よ。
 もちろん、両方の制限をかけても良いよね。
 I/O に制限をかけても面白いけど、良い方法
が見当たらなかった。

どちらが良いかは要件次第
Page 8

http://gauc.no-ip.org/awk-users-jp/

More Related Content

What's hot

Perlと本気で向き合いたくない人と向き合う僕ら
Perlと本気で向き合いたくない人と向き合う僕らPerlと本気で向き合いたくない人と向き合う僕ら
Perlと本気で向き合いたくない人と向き合う僕ら
debug-ito
 
かんたんCMS Picoについて
かんたんCMS PicoについてかんたんCMS Picoについて
かんたんCMS Picoについて
高見 知英
 
関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01
関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01 関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01
関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01
Aya Komuro
 
オレオレPHPのつくり方
オレオレPHPのつくり方オレオレPHPのつくり方
オレオレPHPのつくり方
Ryusuke Sekiyama
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
 
Tfug kansai vol3
Tfug kansai vol3Tfug kansai vol3
Tfug kansai vol3
Natsutani Minoru
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
Uchio Kondo
 
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprint
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprintやすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprint
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprinttaiju higashi
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1sttoshi_pp
 
SVG、あきた
SVG、あきたSVG、あきた
SVG、あきた
cocu_628496
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
emakryo
 
Libjpeg turboの使い方
Libjpeg turboの使い方Libjpeg turboの使い方
Libjpeg turboの使い方
Norishige Fukushima
 
TextMate
TextMateTextMate
コマンドライン使いもLibreOffice
コマンドライン使いもLibreOfficeコマンドライン使いもLibreOffice
コマンドライン使いもLibreOfficeKiwamu Okabe
 
This is Tsuru.
This is Tsuru.This is Tsuru.
This is Tsuru.
cocu_628496
 
Polyphony 新機能ツアー
Polyphony 新機能ツアーPolyphony 新機能ツアー
Polyphony 新機能ツアー
ryos36
 
Async Programming on Ruby
Async Programming on RubyAsync Programming on Ruby
Async Programming on RubyKazki Matsumoto
 
Power Assert and perl.js
Power Assert and perl.jsPower Assert and perl.js
Power Assert and perl.js
Goro Fuji
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 

What's hot (19)

Perlと本気で向き合いたくない人と向き合う僕ら
Perlと本気で向き合いたくない人と向き合う僕らPerlと本気で向き合いたくない人と向き合う僕ら
Perlと本気で向き合いたくない人と向き合う僕ら
 
かんたんCMS Picoについて
かんたんCMS PicoについてかんたんCMS Picoについて
かんたんCMS Picoについて
 
関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01
関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01 関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01
関係者も納得する既存サイトをクラウド化する方法 JAWS-UGクラウド女子会一回目2011/01
 
オレオレPHPのつくり方
オレオレPHPのつくり方オレオレPHPのつくり方
オレオレPHPのつくり方
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
 
Tfug kansai vol3
Tfug kansai vol3Tfug kansai vol3
Tfug kansai vol3
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
 
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprint
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprintやすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprint
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprint
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1st
 
SVG、あきた
SVG、あきたSVG、あきた
SVG、あきた
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
 
Libjpeg turboの使い方
Libjpeg turboの使い方Libjpeg turboの使い方
Libjpeg turboの使い方
 
TextMate
TextMateTextMate
TextMate
 
コマンドライン使いもLibreOffice
コマンドライン使いもLibreOfficeコマンドライン使いもLibreOffice
コマンドライン使いもLibreOffice
 
This is Tsuru.
This is Tsuru.This is Tsuru.
This is Tsuru.
 
Polyphony 新機能ツアー
Polyphony 新機能ツアーPolyphony 新機能ツアー
Polyphony 新機能ツアー
 
Async Programming on Ruby
Async Programming on RubyAsync Programming on Ruby
Async Programming on Ruby
 
Power Assert and perl.js
Power Assert and perl.jsPower Assert and perl.js
Power Assert and perl.js
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 

More from 博文 斉藤

Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15
博文 斉藤
 
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
博文 斉藤
 
Markdown で行こう!
Markdown で行こう!Markdown で行こう!
Markdown で行こう!
博文 斉藤
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
博文 斉藤
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
博文 斉藤
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
博文 斉藤
 
「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!博文 斉藤
 
curl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しようcurl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しよう博文 斉藤
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028博文 斉藤
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413博文 斉藤
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall博文 斉藤
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall博文 斉藤
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall博文 斉藤
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 

More from 博文 斉藤 (15)

Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15
 
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 
Markdown で行こう!
Markdown で行こう!Markdown で行こう!
Markdown で行こう!
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
 
「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!
 
curl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しようcurl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しよう
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 

Recently uploaded

ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (14)

ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

Shell で制限付き並列処理をしよう

  • 1. USP 友の会・シェル芸勉強会 LT - 2014/02/15 Shell で制限付き並列処理をしよう 日本 GNU AWK ユーザー会 斉藤 博文 hi_saito@yk.rim.or.jp @hi_saito Page 1 http://gauc.no-ip.org/awk-users-jp/
  • 2. USP 友の会・シェル芸勉強会 LT - 2014/02/15 なぜ制限を付けるのか?  ImageMagick で 1,000 枚の PNG 画像から アニメーション GIF を並列処理で作成。  メモリを消費してしまい、スワップで操作 不能に陥る。orz  何でこんなことをしていたかは秘密で す。w 何らかの制限を付けないと同じミスが出る Page 2 http://gauc.no-ip.org/awk-users-jp/
  • 3. USP 友の会・シェル芸勉強会 LT - 2014/02/15 Shell で並列処理  bash 前提なので、数値演算は (( と )) で C 言語っぽく。 for (( i = 1; i <= 1000; i++ )); do sleep 2 & done 処理内容によっては大いに不安が残る Page 3 http://gauc.no-ip.org/awk-users-jp/
  • 4. USP 友の会・シェル芸勉強会 LT - 2014/02/15 ここで問題!  メモリを無視して指定ジョブ数だけジョブを 投入する?  コア数を無視してメモリを消費しきれるだけ ジョブを投入する? どちらがいいのだろうか? Page 4 http://gauc.no-ip.org/awk-users-jp/
  • 5. USP 友の会・シェル芸勉強会 LT - 2014/02/15 ジョブ数に制限をかける MAX_JOBS=10 for (( i = 1; i <= 1000; i++ )); do sleep 2 & CJOB_NUM=$(( $(ps --ppid $$ | wc -l) - 1 )) while :; do CJOB_NUM=$(( $(ps --ppid $$ | wc -l) - 1 )) if (( ${CJOB_NUM} < ${MAX_JOBS} )); then break fi done done 本当に CPU 律速しているのだろうか? Page 5 http://gauc.no-ip.org/awk-users-jp/
  • 6. USP 友の会・シェル芸勉強会 LT - 2014/02/15 メモリに制限をかける MEM=$(free -b | awk '/Mem:/ {print $2}') MAX_MEM=$(awk '{print int($0 * 0.3)}' <<<${MEM}) for (( i = 1; i <= 1000; i++ )); do sleep 2 & CJOB_MEM=$(ps -o rss --ppid $$ | awk 'NR>1 {s+=$0} END{print s}') while :; do CJOB_MEM=$(ps -o rss --ppid $$ | awk 'NR>1 {s+=$0} END{print s}') if (( ${CJOB_MEM} < ${MAX_MEM} )); then break fi done done いわゆる CPU バウンドな処理 Page 6 http://gauc.no-ip.org/awk-users-jp/
  • 7. USP 友の会・シェル芸勉強会 LT - 2014/02/15 良く使う並列処理  xargs  ジョブ数のみの指定  make  ジョブ数と Load Average の指定が可能 メモリに制限をかけるようなものってないもの か? Page 7 http://gauc.no-ip.org/awk-users-jp/
  • 8. USP 友の会・シェル芸勉強会 LT - 2014/02/15 まとめ  ジョブ数やメモリに制限をかけるような Shell スクリプトがあまりなかったので作ってみた よ。  もちろん、両方の制限をかけても良いよね。  I/O に制限をかけても面白いけど、良い方法 が見当たらなかった。 どちらが良いかは要件次第 Page 8 http://gauc.no-ip.org/awk-users-jp/