summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSatoru SATOH <ssato@redhat.com>2009-08-02 16:41:00 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2009-08-02 16:41:00 -0300
commit691378600421fda478e3ac08946ce0d516f509ff (patch)
tree8d4e070b38925cfe8d278dc7b8f6e4d71cf1e8d2
parent7877f721f18642e6a7a80d087e582b0a755c0f35 (diff)
downloadtuna-691378600421fda478e3ac08946ce0d516f509ff.tar.gz
tuna: help i18n/l10n
i18n/l10n of help texts originally in help/*/*. This patch adds tuna/help.py converted from help/*/* and updates related parts. Cc: Jon Masters <jcm@redhat.com> Cc: Clark Williams <clark@redhat.com> Signed-off-by: Satoru SATOH <ssato@redhat.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--MANIFEST1
-rw-r--r--Makefile2
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/ja.po557
-rw-r--r--po/pt_BR.po343
-rwxr-xr-xtuna-cmd.py2
-rwxr-xr-xtuna/gui/procview.py20
-rw-r--r--tuna/help.py34
-rwxr-xr-xtuna/tuna.py40
9 files changed, 677 insertions, 323 deletions
diff --git a/MANIFEST b/MANIFEST
index 19e91fe..17b704d 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2,6 +2,7 @@ help/kthreads/
oscilloscope-cmd.py
tuna-cmd.py
tuna/__init__.py
+tuna/help.py
tuna/sysfs.py
tuna/tuna.py
tuna/tuna_gui.py
diff --git a/Makefile b/Makefile
index 9aabd08..998d053 100644
--- a/Makefile
+++ b/Makefile
@@ -23,7 +23,7 @@ rpmdev: bz2dev rpmdirs
rpmbuild -ba --define "_topdir $(PWD)/rpm" rpm/SPECS/$(PACKAGE).spec
po/$(PACKAGE).pot:
- xgettext -k_ -kN_ -f po/POTFILES.in -o $@
+ xgettext -L python -k_ -kN_ -f po/POTFILES.in -o $@
po/%.po: po/$(PACKAGE).pot
msgmerge --suffix=.old -U $@ $< && rm -f $@.old
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 7dbf267..272affe 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,6 +4,7 @@ tuna/tuna_gui.py
tuna/sysfs.py
tuna/oscilloscope.py
tuna/tuna.py
+tuna/help.py
tuna/gui/__init__.py
tuna/gui/util.py
tuna/gui/cpuview.py
diff --git a/po/ja.po b/po/ja.po
index 517d5fe..28c415f 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,103 +7,342 @@ msgid ""
msgstr ""
"Project-Id-Version: tuna 0.8.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-13 12:21-0300\n"
-"PO-Revision-Date: 2009-07-09 21:43+0900\n"
+"POT-Creation-Date: 2009-08-02 16:24-0300\n"
+"PO-Revision-Date: 2009-07-21 15:57+0900\n"
"Last-Translator: Satoru SATOH <ssato@redhat.com>\n"
"Language-Team: Japanese <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: tuna/tuna_gui.glade:8
-msgid "Tuna"
-msgstr "Tuna"
-
-#: tuna/tuna_gui.glade:111
-msgid "Set Process Attributes"
-msgstr "プロセス属性を設定"
-
-#: tuna/tuna_gui.glade:140
-msgid "_Just the selected thread"
-msgstr "選択したスレッドのみ(_J)"
-
-#: tuna/tuna_gui.glade:155
-msgid "_All threads of the selected process"
-msgstr "選択したプロセスのすべてのスレッド(_A)"
+#: tuna/tuna_gui.py:102
+msgid "Root privilege required"
+msgstr "root 権限が必要です"
-#: tuna/tuna_gui.glade:172
-msgid "A_ll command lines matching the regex below:"
-msgstr "正規表現にマッチするすべてのコマンドライン(_L)"
+#: tuna/tuna_gui.py:103
+msgid "Some functions will not work without root privilege."
+msgstr "いくつかの機能は root 権限なしでは動きません。"
-#: tuna/tuna_gui.glade:190
-msgid "<b>Set for these processes</b>"
-msgstr "<b>これらのプロセス群に設定</b>"
+#: tuna/tuna_gui.py:104
+msgid "Do you want to continue?"
+msgstr "続けますか?"
-#: tuna/tuna_gui.glade:210
-msgid "_Policy: "
-msgstr "ポリシー(_P): "
+#: tuna/tuna.py:24
+#, python-format
+msgid "Kernel Thread %(pid)d (%(cmdline)s):"
+msgstr "カーネルスレッド %(pid)d (%(cmdline)s):"
-#: tuna/tuna_gui.glade:241
-msgid "_Scheduler priority:"
-msgstr "スケジューラポリシー(_S):"
+#: tuna/tuna.py:27
+#, python-format
+msgid "User Thread %(pid)d (%(cmdline)s):"
+msgstr "ユーザースレッド %(pid)d (%(cmdline)s):"
-#: tuna/tuna_gui.glade:277
-msgid "A_ffinity:"
-msgstr "アフィニティ(_F):"
+#: tuna/tuna.py:181 tuna/tuna.py:206
+#, python-format
+msgid "could not change %(pid)d affinity to %(new_affinity)s"
+msgstr "PID %(pid)d のアフィニティを %(new_affinity)s に変更できませんでした"
-#: tuna/tuna_gui.glade:324
-msgid "Command line rege_x:"
-msgstr "コマンドラインの正規表現(_X):"
+#: tuna/help.py:10
+msgid ""
+"Used to create kernel threads via kthread_create(). It is the parent of all "
+"the other kernel threads."
+msgstr ""
+"kthread_create() 経由でカーネルスレッドを生成するのに使われます。このスレッド"
+"は他のすべてのカーネルスレッドの親となります。"
-#: tuna/tuna_gui.glade:412
-msgid "Set IRQ Attributes"
-msgstr "IRQ の属性を設定"
+#: tuna/help.py:11
+msgid ""
+"Per-cpu thread that handles POSIX timer callbacks. Timer callbacks are bound "
+"to a cpu and are handled by these threads as per-cpu data."
+msgstr ""
+"POSIX タイマーのコールバックを扱うための CPU 毎のスレッドです。タイマーコール"
+"バックは CPU に関連付けられ、これらのスレッドによってCPU 毎のデータとして処理"
+"されます。"
-#: tuna/tuna_gui.glade:488
-msgid "A_ffinity"
-msgstr "アフィニティ(_F)"
+#: tuna/help.py:12
+msgid ""
+"This cpufreq workqueue runs periodically to sample the idleness of the "
+"system, increasing or reducing the CPU frequency to save power. \n"
+"[One per CPU]"
+msgstr ""
+"この cpufreq ワークキューはシステムのアイドルの程度をサンプリングするために定"
+"期的に実行され、電力節約のために CPU 周波数を上げ下げします。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna_gui.glade:503
-msgid "_Scheduler priority"
-msgstr "スケジューラポリシー(_S)"
+#: tuna/help.py:13
+#, fuzzy
+msgid ""
+"Pushes the RCU grace period along (if possible) and will handle dereferenced "
+"RCU callbacks, such as freeing structures after a grace period. \n"
+"[One per CPU]"
+msgstr ""
+"RCU の猶予期間をもし可能なら遅めて、猶予期間後に構造体を開放するような逆参照"
+"された RCU コールバックを処理するようにします。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna_gui.glade:518
-msgid "_Policy"
-msgstr "ポリシー(_P)"
+#: tuna/help.py:14
+msgid ""
+"Used to call user mode helpers from the kernel, such as /sbin/bridge-stp, "
+"ocfs2_hb_ctl, pnpbios, poweroff, request-key, etc.\""
+msgstr ""
+"/sbin/bridge-stp、ocfs2_hb_ctl、pnpbios、poweroff、request-key などといった"
+"ユーザーモードのヘルパーをカーネルから呼び出すために使われます。"
-#: tuna/tuna_gui.glade:538
-msgid "<b>Set attributes for this IRQ:</b>"
-msgstr "<b>この IRQ の属性を設定:</b>"
+#: tuna/help.py:15
+msgid "Scheduler load balance monitoring."
+msgstr "スケジューラの負荷分散モニタリング"
-#: tuna/tuna_gui.py:102
-#, fuzzy
-msgid "Root privilege required"
+#: tuna/help.py:16
+msgid ""
+"Main thread function used to manage a filesystem logging device journal. "
+"This kernel thread is responsible for two things: <b>COMMIT</b>: Every so "
+"often we need to commit the current state of the filesystem to disk. The "
+"journal thread is responsible for writing all of the metadata buffers to "
+"disk. <b>CHECKPOINT</b>: We cannot reuse a used section of the log file "
+"until all of the data in that part of the log has been rewritten elsewhere "
+"on the disk. Flushing these old buffers to reclaim space in the log is "
+"known as checkpointing, and this thread is responsible for that job."
+msgstr ""
+"ファイルシステムのロギングデバイスジャーナルを管理するために使われるメインの"
+"スレッドです。このカーネルスレッドは次の二つのことについて責任を持ちます: "
+"<b>COMMIT</b>: ファイルシステムの現在の状態は頻繁にディスクにコミットされる必"
+"要があります。ジャーナルスレッドはすべてのメタデータバッファをディスクに書き"
+"込むことについて責任を持ちます。<b>CHECKPOINT</b>: ログファイルの使用中のセク"
+"ションについてはその部分のすべてのデータがディスクのどこか他の場所に再度書き"
+"込まれるまで、再利用することはできません。ログのスペース確保のためにこれらの"
+"古いバッファをフラッシュすることはチェックポイントとして知られていますが、こ"
+"のスレッドはその仕事について責任を持っています。"
+
+#: tuna/help.py:17
+msgid "Locking arbiter for NFS on the system"
+msgstr "システム上の NFS のためのロックの担い手"
+
+# 後半、意訳した.
+#: tuna/help.py:18
+msgid ""
+"Triggered when a rebalance of tasks is needed to CPU domains. This handles "
+"balancing of SCHED_OTHER tasks across CPUs. RT tasks balancing is done "
+"directly in schedule and wakeup paths. Runs at prio 1 because it needs to "
+"schedule above all SCHED_OTHER tasks. If the user has the same issue but "
+"doesn\"t mind having latencies against other kernel threads that run here, "
+"then its fine. But it should definitely be documented that PRIO 1 has other "
+"threads on it at boot up. \n"
+"[One per CPU]"
+msgstr ""
+"CPU ドメインについてタスクの再分配が必要な場合に実行されます。これは複数の "
+"CPU にわたって SCHED_OTHER タスクの分配を処理します。RT タスクの分配はスケ"
+"ジュールと起床パスで直接行なわれます。すべてのSCHED_OTHER タスクをスケジュー"
+"ルしなくてはならないので、優先度 1 で実行されています。もし同じ問題を持ってい"
+"て、しかしこの優先度で実行されている他のカーネルスレッドに対してレイテンシが"
+"生じることを気にしないのなら、こうすることでうまくいくでしょう。しかし優先度 "
+"1 であっても起動したときから同じ優先度で他のスレッドが動いていることに注意が"
+"必要です。\n"
+"[CPU 毎に一つ]"
+
+# Needs review
+#: tuna/help.py:19
+msgid ""
+"This is from a poor attempt to prioritize tasklets. Some tasklets wanted to "
+"run before anything else. Thus there were two tasklet softirqs made. "
+"tasklet_vec and tasklet_hi_vec. A driver writer could put their \"critical\" "
+"tasklets into the tasklet_hi_vec and it would run before other softirqs. "
+"This never really worked as intended. \n"
+"[One per CPU]"
+msgstr ""
+"これはタスクレットを優先度付けしようとするはかない試みです。いくつかのタスク"
+"レットは他より先に実行されるのを望んでいます。そういうわけで tasklet_vec と "
+"tasklet_hi_vec の二つのタスクレットソフトウェア割り込みがつくられました。ドラ"
+"イバ開発者は彼らの \"緊急度の高い\" タスクレットをtasklet_hi_vec におき、他の"
+"ソフトウェア割り込みよりも前に実行されるように望みます。しかし、決して意図さ"
+"れたとおりには動きません。\n"
+"[CPU 毎に一つ]"
+
+#: tuna/help.py:20
+msgid ""
+"Workqueue used to process IO requests. Used by IO schedulers and block "
+"device drivers. \n"
+"[One per CPU]"
msgstr ""
-"root 権限が必要です\n"
-"\n"
+"ワークキューは IO リクエストを処理するのに使われます。IO スケジューラとブロッ"
+"クデバイスドライバが利用します。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna_gui.py:103
-msgid "Some functions will not work without root privilege."
+#: tuna/help.py:21
+msgid ""
+"When receiving a packet the device will place the packet on a queue with its "
+"hard interrupt (threaded in RT). The sirq-net-rx is responsible for finding "
+"out what to do with the packet. It may forward it to another box if the "
+"current box is used as a router, or it will find the task the packet is for. "
+"If that task is currently waiting for the packet, the softirq might hand it "
+"off to that task and the task will handle the rest of the processing of the "
+"packet. \n"
+"[One per CPU]"
+msgstr ""
+"パケットを受信するとデバイスはハードウェア割り込み (RT スレッド) でパケットを"
+"キューに置きます。sirq-net-rx はそのパケットをどうすべきかみつけることに責任"
+"を持っています。ルーターなら他のサーバーに転送されるでしょうし、あるいはパ"
+"ケットのタスクをみつけるでしょう。もしタスクがそのときそのパケットを待ってい"
+"るのならソフトウェア割り込みはタスクに引き継ぎ、タスクはパケットの処理の残り"
+"の部分を実行します。\n"
+"[CPU 毎に一つ]"
+
+#: tuna/help.py:22
+msgid ""
+"This should run at the lowest RT priority. With preemptible RCU, a loaded "
+"system may have tasks that hold RCU locks but have a high nice value. These "
+"tasks may be pushed off for seconds, and if the system is tight on memory, "
+"the RCU deferred freeing may not occur. The result can be drastic. The "
+"krcupreemptd is a daemon that runs just above SCHED_OTHER and wakes up once "
+"a second and performs a synchronize RCU. With RCU boosting, all those that "
+"hold RCU locks will inherit the priority of the krcupreemptd and wake up and "
+"release the RCU locks. This is only a concern for loaded systems and "
+"SCHED_OTHER tasks. If there is an issue of RT tasks starving out SCHED_OTHER "
+"tasks and causing problems with freeing memory, then the RT tasks are "
+"designed badly."
+msgstr ""
+"これはもっとも低い RT 優先度で実行されるべきです。プリエンプト可能なRCU では"
+"システムは RCU ロックを持つが高い nice 値を持つタスクが生じえます。これらタス"
+"クがしばらくスリープしてしまっていても、もしシステムのメモリが逼迫していれば "
+"RCU の遅延開放は起らないかもしれません。その結果は深刻です。krcupreemptd は"
+"SCHED_OTHER でちょうど動作し、一秒間に一回起きて RCU の同期を実行します。RCU "
+"の優先度を上げることで、すべてのこれら RCU ロックを保持するタスクは"
+"krcupreemptd の優先度を継承し、起床して RCU ロックを開放します。起動されたシ"
+"ステムと SCHED_OTHER タスクの唯一の心配はこれ (RCU のロック) だけです。RT タ"
+"スクの問題によって SCHED_OTHER タスクの資源が枯渇し、メモリを開放する上で問題"
+"が生じるのなら、それは RT タスクの設計が悪いからです。"
+
+#: tuna/help.py:23
+msgid ""
+"Activated when under heavy networking activity. Used to avoid monopolizing "
+"the CPUs doing just software interrupt processing. \n"
+"[One per CPU]"
msgstr ""
+"ネットワークの活動が重い場合にアクティブになります。ソフトウェア割り込みの処"
+"理のためだけに CPU が占有されることを防ぐために使われます。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna_gui.py:104
-msgid "Do you want to continue?"
+#: tuna/help.py:24
+msgid ""
+"Basically the timer wheel. Things that add itself to the timer wheel "
+"timeouts will be handled by this softirq. Parts of the kernel that need "
+"timeouts will use this softirq (i.e. network timeouts). The resolution to "
+"these timeouts are defined by the HZ value. \n"
+"[One per CPU]"
+msgstr ""
+"基本的にはタイマー処理を行います。タイマーに登録してタイムアウトするとこのソ"
+"フトウェア割り込みによって処理されます。例えばネットワークのタイムアウトなど"
+"タイムアウトを必要とするカーネル部分でこのソフトウェア割り込みが利用されま"
+"す。タイムアウトの時間分解能は HZ 値で定義されます。\n"
+"[CPU 毎に一つ]"
+
+#: tuna/help.py:25
+msgid ""
+"Global workqueue, used to schedule work to be done in process context. \n"
+"[One per CPU]"
msgstr ""
+"グローバルのワークキューであり、プロセスコンテキストで実行されるスケジュール"
+"処理に使われます。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna.py:47
-#, python-format
-msgid "Kernel Thread %(pid)d (%(cmdline)s):"
-msgstr "カーネルスレッド %(pid)d (%(cmdline)s):"
+#: tuna/help.py:26
+msgid ""
+"Run briefly once per second to reset the softlockup timestamp. If this gets "
+"delayed for more than 60 seconds then a message will be printed. Use /proc/"
+"sys/kernel/hung_task_timeout_secs and /proc/sys/kernel/hung_task_check_count "
+"to control this behaviour. Setting /proc/sys/kernel/hung_task_timeout_secs "
+"to zero will disable this check. \n"
+"[One per CPU]"
+msgstr ""
+"ソフトロックアップタイムスタンプをリセットするために一秒間に一度起動されま"
+"す。60 秒以上遅らせられた場合はメッセージが出力されます。/proc/sys/kernel/"
+"hung_task_timeout_secs と /proc/sys/kernel/hung_task_check_count でふるまいを"
+"制御します。/proc/sys/kernel/hung_task_timeout_secs を 0 にするとこのチェック"
+"は無効となります。\n"
+"[CPU 毎に一つ]"
+
+#: tuna/help.py:27
+msgid ""
+"This is the network transmit queue. Most of the time the network packets "
+"will be handled by the task that is sending the packets out, and doing so at "
+"the priority of that task. But if the protocol window or the network device "
+"queue is full, then the packets will be pushed off to later. The sirq-net-tx "
+"softirq is responsible for sending out these packets. \n"
+"[One per CPU]"
+msgstr ""
+"ネットワークの転送キューです。ほとんどの時間ネットワークパケットはこのタスク"
+"の優先度でこのタスクによって処理されて送出されています。しかしプロトコルウィ"
+"ンドウまたはネットワークデバイスキューが一杯になると、パケットは後で送出され"
+"るようになります。sirq-net-tx ソフトウェア割り込みはこれらのパケットの送信に"
+"責任を持っています。\n"
+"[CPU 毎に一つ]"
+
+#: tuna/help.py:28
+msgid ""
+"Called after a completion to a block device is made. Looking further into "
+"this call, I only see a couple of users. The SCSI driver uses this as well "
+"as cciss. \n"
+"[One per CPU]"
+msgstr ""
+"ブロックデバイスで処理が完了すると呼び出されます。よく見るとこれを使っている"
+"ユーザーはごく少数だけです。SCSI ドライバは cciss と同じようにこれを使ってい"
+"ます。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna.py:50
-#, python-format
-msgid "User Thread %(pid)d (%(cmdline)s):"
-msgstr "ユーザースレッド %(pid)d (%(cmdline)s):"
+#: tuna/help.py:29
+msgid ""
+"Catch all for those devices that couldn\"t use softirqs directly and mostly "
+"made before work queues were around. The difference between a tasklet and a "
+"softirq is that the same tasklet can not run on two different CPUs at the "
+"same time. In this regard it acts like a \"task\" (hence the name \"tasklet"
+"\"). Various devices use tasklets. \n"
+"[One per CPU]"
+msgstr ""
+"ソフトウェア割り込みを直接使うことができず、ワークキューが活動する前にたいて"
+"い発生するデバイスのためのすべての事象をつかまえます。タスクレットとソフト"
+"ウェア割り込みの違いは同じタスクレットは同時に二つの異なる CPU で実行できない"
+"ということです。この点においてタスクレットは \"タスク\" (それ故に名前も \"タ"
+"スクレット\") のように振舞います。様々なデバイスがタスクレットを使っていま"
+"す。\n"
+"[CPU 毎に一つ]"
+
+#: tuna/help.py:30
+msgid ""
+"Per USB storage device virtual SCSI controller. Persistant across device "
+"insertion/removal, as is the SCSI node. This is done so that a device which "
+"is removed can be re-attached and be granted the same /dev node as before, "
+"creating persistance between connections of the target unit. Gets commands "
+"from the SCSI mid-layer and, after sanity checking several things, sends the "
+"command to the \"protocol\" handler. This handler is responsible for re-"
+"writing the command (if necessary) into a form which the device will accept. "
+"For example, ATAPI devices do not support 6-byte commands. Thus, they must "
+"be re-written into 10-byte variants."
+msgstr ""
+"USB ストレージデバイス毎の仮想 SCSI コントローラ。SCSI ノードとしてデバイスの"
+"抜き差しを通して永続します。これはターゲットユニットの接続を通して永続的につ"
+"くられ、抜かれたデバイスが再度接続されたときに前と同じ /dev ノードとなるよう"
+"になります。SCSI 中間レイヤーからコマンドを受け取り、いくつか健全性チェックを"
+"行った後で、\"プロトコル\" ハンドラにそのコマンドを送ります。ハンドラは必要な"
+"らデバイスが受け取ることのできる形式にコマンドを変換する責任を担っています。"
+"例えば ATAPI デバイスは 6-byte コマンドをサポートしていませんので、10-byte の"
+"ものに変換してやらなければいけません。"
+
+#: tuna/help.py:31
+msgid ""
+"High priority system thread that performs thread migration by bumping thread "
+"off CPU then pushing onto another runqueue. \n"
+"[One per CPU]"
+msgstr ""
+"スレッドを CPU から外し、他の実行キューに移動することで、スレッドマイグレー"
+"ションを実行する高い優先度のシステムスレッドです。\n"
+"[CPU 毎に一つ]"
-#: tuna/tuna.py:204 tuna/tuna.py:229
-#, fuzzy, python-format
-msgid "could not change %(pid)d affinity to %(new_affinity)s"
-msgstr "PID %(pid)d について %(caff)s から %(naff)s に変更できませんでした!"
+#: tuna/help.py:32
+msgid ""
+"Handles Sun RPC network messages (mainly for NFS) \n"
+"[One per CPU]"
+msgstr ""
+"主に NFS のための Sun RPC ネットワークメッセージを処理します。\n"
+"[CPU 毎に一つ]"
#: tuna/gui/util.py:50
msgid "Invalid affinity, specify a list of CPUs!"
@@ -154,7 +393,7 @@ msgstr "CPU を含める(_N)"
#: tuna/gui/cpuview.py:198
msgid "_Isolate CPU"
-msgstr ""
+msgstr "CPU を隔離(_I)"
#: tuna/gui/cpuview.py:200
msgid "I_nclude CPU Socket"
@@ -162,88 +401,87 @@ msgstr "CPU ソケットを含める(_N)"
#: tuna/gui/cpuview.py:201
msgid "_Isolate CPU Socket"
-msgstr ""
+msgstr "CPU ソケットを隔離(_I)"
#: tuna/gui/cpuview.py:202
msgid "_Restore CPU"
-msgstr ""
+msgstr "CPU を復帰させる(_R)"
-#: tuna/gui/procview.py:196 tuna/gui/procview.py:216 tuna/gui/irqview.py:118
+#: tuna/gui/procview.py:200 tuna/gui/procview.py:220 tuna/gui/irqview.py:118
msgid "PID"
msgstr "PID"
-#: tuna/gui/procview.py:197 tuna/gui/procview.py:217 tuna/gui/irqview.py:119
+#: tuna/gui/procview.py:201 tuna/gui/procview.py:221 tuna/gui/irqview.py:119
msgid "Policy"
msgstr "ポリシー"
-#: tuna/gui/procview.py:198 tuna/gui/procview.py:218 tuna/gui/irqview.py:120
+#: tuna/gui/procview.py:202 tuna/gui/procview.py:222 tuna/gui/irqview.py:120
msgid "Priority"
msgstr "優先度"
-#: tuna/gui/procview.py:199 tuna/gui/procview.py:219 tuna/gui/irqview.py:121
+#: tuna/gui/procview.py:203 tuna/gui/procview.py:223 tuna/gui/irqview.py:121
#: tuna/gui/irqview.py:140
msgid "Affinity"
msgstr "アフィニティ"
-#: tuna/gui/procview.py:200
+#: tuna/gui/procview.py:204
msgid "VolCtxtSwitch"
msgstr "VolCtxtSwitch"
-#: tuna/gui/procview.py:201
+#: tuna/gui/procview.py:205
msgid "NonVolCtxtSwitch"
msgstr "NonVolCtxtSwitch"
-#: tuna/gui/procview.py:202 tuna/gui/procview.py:220
+#: tuna/gui/procview.py:206 tuna/gui/procview.py:224
msgid "Command Line"
msgstr "コマンドライン"
-#: tuna/gui/procview.py:286
-#, fuzzy
+#: tuna/gui/procview.py:284
msgid "Kernel Thread"
-msgstr "カーネルスレッドを隠す(_H)"
+msgstr "カーネルスレッド"
-#: tuna/gui/procview.py:474
+#: tuna/gui/procview.py:470
msgid "Save As"
msgstr "名前を付けて保存"
-#: tuna/gui/procview.py:532
+#: tuna/gui/procview.py:528
#, python-format
msgid "Kernel thread tunings saved to %s!"
msgstr "カーネルスレッド設定を %s に保存しました!"
-#: tuna/gui/procview.py:545
+#: tuna/gui/procview.py:541
msgid "_Set process attributes"
msgstr "プロセス属性を設定(_S)"
-#: tuna/gui/procview.py:547
+#: tuna/gui/procview.py:543
msgid "Sto_p refreshing the process list"
msgstr "プロセスリストの更新を停止(_P)"
-#: tuna/gui/procview.py:549
+#: tuna/gui/procview.py:545
msgid "_Refresh the process list"
msgstr "プロセスリストを更新(_R)"
-#: tuna/gui/procview.py:552
+#: tuna/gui/procview.py:548
msgid "_Hide kernel threads"
msgstr "カーネルスレッドを隠す(_H)"
-#: tuna/gui/procview.py:554
+#: tuna/gui/procview.py:550
msgid "_Show kernel threads"
msgstr "カーネルスレッドを表示(_S)"
-#: tuna/gui/procview.py:557
+#: tuna/gui/procview.py:553
msgid "_Hide user threads"
msgstr "ユーザースレッドを隠す(_H)"
-#: tuna/gui/procview.py:559
+#: tuna/gui/procview.py:555
msgid "_Show user threads"
msgstr "ユーザースレッドを表示(_S)"
-#: tuna/gui/procview.py:561
+#: tuna/gui/procview.py:557
msgid "_What is this?"
msgstr "これは何?(_W)"
-#: tuna/gui/procview.py:563
+#: tuna/gui/procview.py:559
msgid "_Save kthreads tunings"
msgstr "カーネルスレッド設定を保存(_S)"
@@ -273,15 +511,15 @@ msgstr "IRQ リストを更新(_R)"
#: tuna-cmd.py:43
msgid "Usage: tuna [OPTIONS]"
-msgstr ""
+msgstr "使用法: tuna [OPTIONS]"
#: tuna-cmd.py:45
msgid "Give this help list"
-msgstr ""
+msgstr "このヘルプリストを表示"
#: tuna-cmd.py:46
msgid "Start the GUI"
-msgstr ""
+msgstr "GUI を起動"
#: tuna-cmd.py:47 tuna-cmd.py:48 tuna-cmd.py:52 tuna-cmd.py:54 tuna-cmd.py:57
#: tuna-cmd.py:79
@@ -291,38 +529,38 @@ msgstr ""
#: tuna-cmd.py:47
#, python-format
msgid "%(cpulist)s affected by commands"
-msgstr ""
+msgstr "%(cpulist)s をコマンドの対象とする"
#: tuna-cmd.py:49
msgid "Operation will affect children threads"
-msgstr ""
+msgstr "子のスレッドも操作の影響下におく"
#: tuna-cmd.py:50
msgid "Display filter the selected entities"
-msgstr ""
+msgstr "選択したエンティティをフィルタ表示"
#: tuna-cmd.py:51
#, python-format
msgid "Move all threads away from %(cpulist)s"
-msgstr ""
+msgstr "すべてのスレッドを %(cpulist)s から移動"
#: tuna-cmd.py:53
#, python-format
msgid "Allow all threads to run on %(cpulist)s"
-msgstr ""
+msgstr "すべてのスレッドについて %(cpulist)s で実行されることを許す"
#: tuna-cmd.py:55
msgid "Operations will not affect kernel threads"
-msgstr ""
+msgstr "カーネルスレッドを操作の対象から外す"
#: tuna-cmd.py:56
#, python-format
msgid "Move selected entities to %(cpulist)s"
-msgstr ""
+msgstr "選択したエンティティを %(cpulist)s に移動"
#: tuna-cmd.py:59
msgid "Show network sockets in use by threads"
-msgstr ""
+msgstr "スレッドが使用しているネットワークソケットを表示"
#: tuna-cmd.py:61 tuna-cmd.py:63
msgid "POLICY"
@@ -335,12 +573,11 @@ msgstr ""
#: tuna-cmd.py:62
#, python-format
msgid "Set thread scheduler tunables: %(policy)s and %(rtprio)s"
-msgstr ""
+msgstr "スレッドのスケジューラパラメータを設定: %(policy)s と %(rtprio)s"
#: tuna-cmd.py:64
-#, fuzzy
msgid "Show thread list"
-msgstr "ユーザースレッドを表示(_S)"
+msgstr "スレッドのリストを表示"
#: tuna-cmd.py:65 tuna-cmd.py:66
msgid "IRQ-LIST"
@@ -349,16 +586,16 @@ msgstr ""
#: tuna-cmd.py:65
#, python-format
msgid "%(irqlist)s affected by commands"
-msgstr ""
+msgstr "%(irqlist)s をコマンドの対象とする"
#: tuna-cmd.py:67 tuna-cmd.py:68
msgid "FILENAME"
msgstr ""
#: tuna-cmd.py:67
-#, fuzzy, python-format
+#, python-format
msgid "Save kthreads sched tunables to %(filename)s"
-msgstr "カーネルスレッド設定を保存(_S)"
+msgstr "カーネルスレッドのスケジューラパラメータ設定を %(filename)s に保存"
#: tuna-cmd.py:70 tuna-cmd.py:71
msgid "CPU-SOCKET-LIST"
@@ -367,7 +604,7 @@ msgstr ""
#: tuna-cmd.py:70
#, python-format
msgid "%(cpusocketlist)s affected by commands"
-msgstr ""
+msgstr "%(cpusocketlist)s をコマンドの対象とする"
#: tuna-cmd.py:73 tuna-cmd.py:74
msgid "THREAD-LIST"
@@ -376,117 +613,47 @@ msgstr ""
#: tuna-cmd.py:73
#, python-format
msgid "%(threadlist)s affected by commands"
-msgstr ""
+msgstr "%(threadlist)s をコマンドの対象とする"
#: tuna-cmd.py:75
msgid "Operations will not affect user threads"
-msgstr ""
+msgstr "ユーザースレッドを操作の対象から外す"
#: tuna-cmd.py:76
msgid "Show version"
-msgstr ""
+msgstr "バージョンを表示"
#: tuna-cmd.py:77
msgid "Provides help about selected entities"
-msgstr ""
+msgstr "選択したエンティティのヘルプを提供"
#: tuna-cmd.py:78
#, python-format
msgid "Spread selected entities over %(cpulist)s"
-msgstr ""
+msgstr "選択したエンティティを %(cpulist)s に展開"
#: tuna-cmd.py:94
-#, fuzzy, python-format
+#, python-format
msgid "thread %d doesn't exists!"
-msgstr "tuna: スレッド %d は存在しません!"
+msgstr "スレッド %d は存在しません!"
#: tuna-cmd.py:113
msgid "thread"
msgstr "スレッド"
#: tuna-cmd.py:400 tuna-cmd.py:405 tuna-cmd.py:422
-#, fuzzy
msgid "requires a cpu list!"
-msgstr "tuna: --move には CPU リストが必要です!"
+msgstr "CPU リストが必要です!"
#: tuna-cmd.py:425
-#, fuzzy
msgid "requires a list of threads/irqs!"
-msgstr "tuna: --move にはリストかスレッド/IRQ が必要です!"
+msgstr "スレッド/IRQ のリストが必要です!"
#: tuna-cmd.py:451
-#, fuzzy, python-format
+#, python-format
msgid "invalid socket %(socket)s sockets available: %(available)s"
-msgstr "tuna: 不正なソケット %s, 利用可能なソケット: %s"
+msgstr "不正なソケット %(socket)s, 利用可能なソケット: %(available)s"
#: tuna-cmd.py:476
-#, fuzzy
msgid "requires a thread list!"
-msgstr "tuna: --what_is にはスレッドリストが必要です!"
-
-#, fuzzy
-#~ msgid "Couldn't change the affinity of"
-#~ msgstr "%d のアフィニティを %s に変更できませんでした!"
-
-#~ msgid "move_threads_to_cpu: could not change pid %d affinity to %s"
-#~ msgstr ""
-#~ "move_threads_to_cpu: PID %d のアフィニティを %s に変更できませんでした"
-
-#~ msgid ""
-#~ "<b>Kernel Thread %d (%s):</b>\n"
-#~ "%s%s"
-#~ msgstr ""
-#~ "<b>カーネルスレッド %d %s):</b>\n"
-#~ "%s%s"
-
-#~ msgid ""
-#~ "Usage: tuna [OPTIONS]\n"
-#~ "\t-h, --help\t\t\tGive this help list\n"
-#~ "\t-g, --gui\t\t\tStart the GUI\n"
-#~ "\t-c, --cpus=CPU-LIST\t\tCPU-LIST affected by commands\n"
-#~ "\t-C, --affect_children\t\tOperation will affect children threads\n"
-#~ "\t-f, --filter\t\t\tDisplay filter the selected entities\n"
-#~ "\t-i, --isolate\t\t\tMove all threads away from CPU-LIST\n"
-#~ "\t-I, --include\t\t\tAllow all threads to run on CPU-LIST\n"
-#~ "\t-K, --no_kthreads\t\tOperations will not affect kernel threads\n"
-#~ "\t-m, --move\t\t\tmove selected entities to CPU-LIST\n"
-#~ "\t-p, --priority=[POLICY]:RTPRIO\tset thread scheduler POLICY and RTPRIO\n"
-#~ "\t-P, --show_threads\t\tshow thread list\n"
-#~ "\t-q, --irqs=IRQ-LIST\t\tIRQ-LIST affected by commands\n"
-#~ "\t-s, --save=FILENAME\t\tsave kthreads sched tunables to FILENAME\n"
-#~ "\t-S, --sockets=CPU-SOCKET-LIST CPU-SOCKET-LIST affected by commands\n"
-#~ "\t-t, --threads=THREAD-LIST\tTHREAD-LIST affected by commands\n"
-#~ "\t-U, --no_uthreads\t\tOperations will not affect user threads\n"
-#~ "\t-v, --version\t\t\tshow version\n"
-#~ "\t-W, --what_is\t\t\tProvides help about selected entities\n"
-#~ "\t-x, --spread\t\t\tspread selected entities over CPU-LIST"
-#~ msgstr ""
-#~ "使い方: tuna [OPTIONS]\n"
-#~ "\t-h, --help\t\t\tこのヘルプリストを表示\n"
-#~ "\t-g, --gui\t\t\tGUI を起動\n"
-#~ "\t-c, --cpus=CPU-LIST\t\tコマンドの対象とする CPU-LIST を指定\n"
-#~ "\t-C, --affect_children\t\t子のスレッドにも操作の影響が及ぶようにする\n"
-#~ "\t-f, --filter\t\t\tDisplay filter the selected entities\n"
-#~ "\t-i, --isolate\t\t\tCPU-LIST からすべてのスレッドを移動\n"
-#~ "\t-I, --include\t\t\tCPU-LIST でのすべてのスレッドの実行を許可\n"
-#~ "\t-K, --no_kthreads\t\tカーネルスレッドを操作の対象から外す\n"
-#~ "\t-m, --move\t\t\t選択したエンティティを CPU-LIST に移動\n"
-#~ "\t-p, --priority=[POLICY]:RTPRIO\tスレッドスケジューラ POLICY と RTPRIO を"
-#~ "設定\n"
-#~ "\t-P, --show_threads\t\tスレッドリストを表示\n"
-#~ "\t-q, --irqs=IRQ-LIST\t\tコマンドの対象とする IRQ-LIST を指定\n"
-#~ "\t-s, --save=FILENAME\t\tカーネルスレッドのスケジューラ設定を FILENAME に"
-#~ "保存\n"
-#~ "\t-S, --sockets=CPU-SOCKET-LIST コマンドの対象とする CPU-SOCKET-LIST を"
-#~ "指定\n"
-#~ "\t-t, --threads=THREAD-LIST\tコマンドの対象とする THREAD-LIST を指定\n"
-#~ "\t-U, --no_uthreads\t\tユーザースレッドを操作の対象から外す\n"
-#~ "\t-v, --version\t\t\tバージョンを表示\n"
-#~ "\t-W, --what_is\t\t\t選択したエンティティのヘルプを表示\n"
-#~ "\t-x, --spread\t\t\t選択したエンティティを CPU-LIST に展開"
-
-#~ msgid "tuna: --isolate requires a cpu list!"
-#~ msgstr "tuna: --isolate には CPU リストが必要です!"
-
-#~ msgid "tuna: --include requires a cpu list!"
-#~ msgstr "tuna: --include には CPU リストが必要です!"
+msgstr "スレッドリストが必要です!"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ff62867..93ac24b 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: tuna 0.9\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-13 12:23-0300\n"
+"POT-Creation-Date: 2009-08-02 16:24-0300\n"
"PO-Revision-Date: 2009-07-15 11:10+BRT\n"
"Last-Translator: Arnaldo Carvalho de Melo <acme@redhat.com>\n"
"Language-Team: pt_BR <pt-br@li.org>\n"
@@ -16,66 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: tuna/tuna_gui.glade:8
-msgid "Tuna"
-msgstr ""
-
-#: tuna/tuna_gui.glade:111
-msgid "Set Process Attributes"
-msgstr "Configurar Atributos do Processo"
-
-#: tuna/tuna_gui.glade:140
-msgid "_Just the selected thread"
-msgstr "_Somente a thread selecionada"
-
-#: tuna/tuna_gui.glade:155
-msgid "_All threads of the selected process"
-msgstr "_Todas as threads do processo selecionado"
-
-#: tuna/tuna_gui.glade:172
-msgid "A_ll command lines matching the regex below:"
-msgstr "T_odas as linhas de comando combinando com a expressão regular abaixo:"
-
-#: tuna/tuna_gui.glade:190
-msgid "<b>Set for these processes</b>"
-msgstr "<b>Configure estes processos</b>"
-
-#: tuna/tuna_gui.glade:210
-msgid "_Policy: "
-msgstr "_Política: "
-
-#: tuna/tuna_gui.glade:241
-msgid "_Scheduler priority:"
-msgstr "_Prioridade no escalonador"
-
-#: tuna/tuna_gui.glade:277
-msgid "A_ffinity:"
-msgstr "A_finidade: "
-
-#: tuna/tuna_gui.glade:324
-msgid "Command line rege_x:"
-msgstr "Rege_x para a linha de comando:"
-
-#: tuna/tuna_gui.glade:412
-msgid "Set IRQ Attributes"
-msgstr "Configure atributos desta IRQ"
-
-#: tuna/tuna_gui.glade:488
-msgid "A_ffinity"
-msgstr "A_finidade"
-
-#: tuna/tuna_gui.glade:503
-msgid "_Scheduler priority"
-msgstr "Prioridade no E_scalonador"
-
-#: tuna/tuna_gui.glade:518
-msgid "_Policy"
-msgstr "_Política"
-
-#: tuna/tuna_gui.glade:538
-msgid "<b>Set attributes for this IRQ:</b>"
-msgstr "<b>Configure attributos desta IRQ:</b>"
-
#: tuna/tuna_gui.py:102
msgid "Root privilege required"
msgstr "Privilégios de super usuário são necessários"
@@ -88,21 +28,215 @@ msgstr "Algumas partes não funcionarão sem privilégios de super usuário."
msgid "Do you want to continue?"
msgstr "Deseja continuar?"
-#: tuna/tuna.py:47
+#: tuna/tuna.py:24
#, python-format
msgid "Kernel Thread %(pid)d (%(cmdline)s):"
msgstr "Thread do Kernel %(pid)d (%(cmdline)s):"
-#: tuna/tuna.py:50
+#: tuna/tuna.py:27
#, python-format
msgid "User Thread %(pid)d (%(cmdline)s):"
msgstr "Thread %(pid)d (%(cmdline)s):"
-#: tuna/tuna.py:204 tuna/tuna.py:229
+#: tuna/tuna.py:181 tuna/tuna.py:206
#, python-format
msgid "could not change %(pid)d affinity to %(new_affinity)s"
msgstr "Não foi possível mudar a afinidade de %(pid)d para %(new_affinity)s"
+#: tuna/help.py:10
+msgid ""
+"Used to create kernel threads via kthread_create(). It is the parent of all "
+"the other kernel threads."
+msgstr ""
+
+#: tuna/help.py:11
+msgid ""
+"Per-cpu thread that handles POSIX timer callbacks. Timer callbacks are bound "
+"to a cpu and are handled by these threads as per-cpu data."
+msgstr ""
+
+#: tuna/help.py:12
+msgid ""
+"This cpufreq workqueue runs periodically to sample the idleness of the "
+"system, increasing or reducing the CPU frequency to save power. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:13
+msgid ""
+"Pushes the RCU grace period along (if possible) and will handle dereferenced "
+"RCU callbacks, such as freeing structures after a grace period. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:14
+msgid ""
+"Used to call user mode helpers from the kernel, such as /sbin/bridge-stp, "
+"ocfs2_hb_ctl, pnpbios, poweroff, request-key, etc.\""
+msgstr ""
+
+#: tuna/help.py:15
+msgid "Scheduler load balance monitoring."
+msgstr ""
+
+#: tuna/help.py:16
+msgid ""
+"Main thread function used to manage a filesystem logging device journal. "
+"This kernel thread is responsible for two things: <b>COMMIT</b>: Every so "
+"often we need to commit the current state of the filesystem to disk. The "
+"journal thread is responsible for writing all of the metadata buffers to "
+"disk. <b>CHECKPOINT</b>: We cannot reuse a used section of the log file "
+"until all of the data in that part of the log has been rewritten elsewhere "
+"on the disk. Flushing these old buffers to reclaim space in the log is "
+"known as checkpointing, and this thread is responsible for that job."
+msgstr ""
+
+#: tuna/help.py:17
+msgid "Locking arbiter for NFS on the system"
+msgstr ""
+
+#: tuna/help.py:18
+msgid ""
+"Triggered when a rebalance of tasks is needed to CPU domains. This handles "
+"balancing of SCHED_OTHER tasks across CPUs. RT tasks balancing is done "
+"directly in schedule and wakeup paths. Runs at prio 1 because it needs to "
+"schedule above all SCHED_OTHER tasks. If the user has the same issue but "
+"doesn\"t mind having latencies against other kernel threads that run here, "
+"then its fine. But it should definitely be documented that PRIO 1 has other "
+"threads on it at boot up. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:19
+msgid ""
+"This is from a poor attempt to prioritize tasklets. Some tasklets wanted to "
+"run before anything else. Thus there were two tasklet softirqs made. "
+"tasklet_vec and tasklet_hi_vec. A driver writer could put their \"critical\" "
+"tasklets into the tasklet_hi_vec and it would run before other softirqs. "
+"This never really worked as intended. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:20
+msgid ""
+"Workqueue used to process IO requests. Used by IO schedulers and block "
+"device drivers. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:21
+msgid ""
+"When receiving a packet the device will place the packet on a queue with its "
+"hard interrupt (threaded in RT). The sirq-net-rx is responsible for finding "
+"out what to do with the packet. It may forward it to another box if the "
+"current box is used as a router, or it will find the task the packet is for. "
+"If that task is currently waiting for the packet, the softirq might hand it "
+"off to that task and the task will handle the rest of the processing of the "
+"packet. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:22
+msgid ""
+"This should run at the lowest RT priority. With preemptible RCU, a loaded "
+"system may have tasks that hold RCU locks but have a high nice value. These "
+"tasks may be pushed off for seconds, and if the system is tight on memory, "
+"the RCU deferred freeing may not occur. The result can be drastic. The "
+"krcupreemptd is a daemon that runs just above SCHED_OTHER and wakes up once "
+"a second and performs a synchronize RCU. With RCU boosting, all those that "
+"hold RCU locks will inherit the priority of the krcupreemptd and wake up and "
+"release the RCU locks. This is only a concern for loaded systems and "
+"SCHED_OTHER tasks. If there is an issue of RT tasks starving out SCHED_OTHER "
+"tasks and causing problems with freeing memory, then the RT tasks are "
+"designed badly."
+msgstr ""
+
+#: tuna/help.py:23
+msgid ""
+"Activated when under heavy networking activity. Used to avoid monopolizing "
+"the CPUs doing just software interrupt processing. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:24
+msgid ""
+"Basically the timer wheel. Things that add itself to the timer wheel "
+"timeouts will be handled by this softirq. Parts of the kernel that need "
+"timeouts will use this softirq (i.e. network timeouts). The resolution to "
+"these timeouts are defined by the HZ value. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:25
+msgid ""
+"Global workqueue, used to schedule work to be done in process context. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:26
+msgid ""
+"Run briefly once per second to reset the softlockup timestamp. If this gets "
+"delayed for more than 60 seconds then a message will be printed. Use /proc/"
+"sys/kernel/hung_task_timeout_secs and /proc/sys/kernel/hung_task_check_count "
+"to control this behaviour. Setting /proc/sys/kernel/hung_task_timeout_secs "
+"to zero will disable this check. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:27
+msgid ""
+"This is the network transmit queue. Most of the time the network packets "
+"will be handled by the task that is sending the packets out, and doing so at "
+"the priority of that task. But if the protocol window or the network device "
+"queue is full, then the packets will be pushed off to later. The sirq-net-tx "
+"softirq is responsible for sending out these packets. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:28
+msgid ""
+"Called after a completion to a block device is made. Looking further into "
+"this call, I only see a couple of users. The SCSI driver uses this as well "
+"as cciss. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:29
+msgid ""
+"Catch all for those devices that couldn\"t use softirqs directly and mostly "
+"made before work queues were around. The difference between a tasklet and a "
+"softirq is that the same tasklet can not run on two different CPUs at the "
+"same time. In this regard it acts like a \"task\" (hence the name \"tasklet"
+"\"). Various devices use tasklets. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:30
+msgid ""
+"Per USB storage device virtual SCSI controller. Persistant across device "
+"insertion/removal, as is the SCSI node. This is done so that a device which "
+"is removed can be re-attached and be granted the same /dev node as before, "
+"creating persistance between connections of the target unit. Gets commands "
+"from the SCSI mid-layer and, after sanity checking several things, sends the "
+"command to the \"protocol\" handler. This handler is responsible for re-"
+"writing the command (if necessary) into a form which the device will accept. "
+"For example, ATAPI devices do not support 6-byte commands. Thus, they must "
+"be re-written into 10-byte variants."
+msgstr ""
+
+#: tuna/help.py:31
+msgid ""
+"High priority system thread that performs thread migration by bumping thread "
+"off CPU then pushing onto another runqueue. \n"
+"[One per CPU]"
+msgstr ""
+
+#: tuna/help.py:32
+msgid ""
+"Handles Sun RPC network messages (mainly for NFS) \n"
+"[One per CPU]"
+msgstr ""
+
#: tuna/gui/util.py:50
msgid "Invalid affinity, specify a list of CPUs!"
msgstr "Afinidade inválida, especifique uma lista de CPUs!"
@@ -166,87 +300,87 @@ msgstr "_Isole Soquete de CPU"
msgid "_Restore CPU"
msgstr "_Restaure CPU"
-#: tuna/gui/procview.py:196 tuna/gui/procview.py:216 tuna/gui/irqview.py:118
+#: tuna/gui/procview.py:200 tuna/gui/procview.py:220 tuna/gui/irqview.py:118
msgid "PID"
msgstr ""
-#: tuna/gui/procview.py:197 tuna/gui/procview.py:217 tuna/gui/irqview.py:119
+#: tuna/gui/procview.py:201 tuna/gui/procview.py:221 tuna/gui/irqview.py:119
msgid "Policy"
msgstr "Política"
-#: tuna/gui/procview.py:198 tuna/gui/procview.py:218 tuna/gui/irqview.py:120
+#: tuna/gui/procview.py:202 tuna/gui/procview.py:222 tuna/gui/irqview.py:120
msgid "Priority"
msgstr "Prioridade"
-#: tuna/gui/procview.py:199 tuna/gui/procview.py:219 tuna/gui/irqview.py:121
+#: tuna/gui/procview.py:203 tuna/gui/procview.py:223 tuna/gui/irqview.py:121
#: tuna/gui/irqview.py:140
msgid "Affinity"
msgstr "Afinidade"
-#: tuna/gui/procview.py:200
+#: tuna/gui/procview.py:204
msgid "VolCtxtSwitch"
msgstr ""
"Trocas de\n"
"Contexto\n"
"Voluntárias"
-#: tuna/gui/procview.py:201
+#: tuna/gui/procview.py:205
msgid "NonVolCtxtSwitch"
msgstr ""
"Trocas de\n"
"Contexto\n"
"Involuntárias"
-#: tuna/gui/procview.py:202 tuna/gui/procview.py:220
+#: tuna/gui/procview.py:206 tuna/gui/procview.py:224
msgid "Command Line"
msgstr "Linha de Comando"
-#: tuna/gui/procview.py:286
+#: tuna/gui/procview.py:284
msgid "Kernel Thread"
msgstr "Thread do Kernel"
-#: tuna/gui/procview.py:474
+#: tuna/gui/procview.py:470
msgid "Save As"
msgstr "Salvar Como"
-#: tuna/gui/procview.py:532
+#: tuna/gui/procview.py:528
#, python-format
msgid "Kernel thread tunings saved to %s!"
msgstr "Configurações das threads do kernel salvas no arquivo %s!"
-#: tuna/gui/procview.py:545
+#: tuna/gui/procview.py:541
msgid "_Set process attributes"
msgstr "Configurar atributo_s do processo"
-#: tuna/gui/procview.py:547
+#: tuna/gui/procview.py:543
msgid "Sto_p refreshing the process list"
msgstr "_Parar de atualizar a lista de processos"
-#: tuna/gui/procview.py:549
+#: tuna/gui/procview.py:545
msgid "_Refresh the process list"
msgstr "Atualiza_r a lista de processos"
-#: tuna/gui/procview.py:552
+#: tuna/gui/procview.py:548
msgid "_Hide kernel threads"
msgstr "_Não mostrar threads do kernel"
-#: tuna/gui/procview.py:554
+#: tuna/gui/procview.py:550
msgid "_Show kernel threads"
msgstr "Mostrar thread_s do kernel"
-#: tuna/gui/procview.py:557
+#: tuna/gui/procview.py:553
msgid "_Hide user threads"
msgstr "Não mostrar threads"
-#: tuna/gui/procview.py:559
+#: tuna/gui/procview.py:555
msgid "_Show user threads"
msgstr "_Mostrar threads"
-#: tuna/gui/procview.py:561
+#: tuna/gui/procview.py:557
msgid "_What is this?"
msgstr "_O que é isto?"
-#: tuna/gui/procview.py:563
+#: tuna/gui/procview.py:559
msgid "_Save kthreads tunings"
msgstr "_Salvar"
@@ -424,3 +558,46 @@ msgstr ""
#: tuna-cmd.py:476
msgid "requires a thread list!"
msgstr "requer uma lista de threads!"
+
+#~ msgid "Set Process Attributes"
+#~ msgstr "Configurar Atributos do Processo"
+
+#~ msgid "_Just the selected thread"
+#~ msgstr "_Somente a thread selecionada"
+
+#~ msgid "_All threads of the selected process"
+#~ msgstr "_Todas as threads do processo selecionado"
+
+#~ msgid "A_ll command lines matching the regex below:"
+#~ msgstr ""
+#~ "T_odas as linhas de comando combinando com a expressão regular abaixo:"
+
+#~ msgid "<b>Set for these processes</b>"
+#~ msgstr "<b>Configure estes processos</b>"
+
+#~ msgid "_Policy: "
+#~ msgstr "_Política: "
+
+#~ msgid "_Scheduler priority:"
+#~ msgstr "_Prioridade no escalonador"
+
+#~ msgid "A_ffinity:"
+#~ msgstr "A_finidade: "
+
+#~ msgid "Command line rege_x:"
+#~ msgstr "Rege_x para a linha de comando:"
+
+#~ msgid "Set IRQ Attributes"
+#~ msgstr "Configure atributos desta IRQ"
+
+#~ msgid "A_ffinity"
+#~ msgstr "A_finidade"
+
+#~ msgid "_Scheduler priority"
+#~ msgstr "Prioridade no E_scalonador"
+
+#~ msgid "_Policy"
+#~ msgstr "_Política"
+
+#~ msgid "<b>Set attributes for this IRQ:</b>"
+#~ msgstr "<b>Configure attributos desta IRQ:</b>"
diff --git a/tuna-cmd.py b/tuna-cmd.py
index 29967f8..54cb3df 100755
--- a/tuna-cmd.py
+++ b/tuna-cmd.py
@@ -97,7 +97,7 @@ def thread_help(tid):
pinfo = ps[tid]
cmdline = procfs.process_cmdline(pinfo)
help, title = tuna.kthread_help_plain_text(tid, cmdline)
- print "%s\n\n%s" % (title, help)
+ print "%s\n\n%s" % (title, _(help))
def save(cpu_list, thread_list, filename):
kthreads = tuna.get_kthread_sched_tunings()
diff --git a/tuna/gui/procview.py b/tuna/gui/procview.py
index 70d96bc..2f3f3cf 100755
--- a/tuna/gui/procview.py
+++ b/tuna/gui/procview.py
@@ -4,6 +4,10 @@ pygtk.require("2.0")
from tuna import tuna, gui
import gobject, gtk, procfs, re, schedutils
+def N_(s):
+ """gettext_noop"""
+ return s
+
class process_druid:
( PROCESS_COL_PID, PROCESS_COL_NAME ) = range(2)
@@ -275,17 +279,9 @@ class procview:
if not tuna.iskthread(pid):
return True
cmdline = self.tree_store.get_value(row, self.COL_CMDLINE).split(' ')[0]
- try:
- index = cmdline.index("/")
- key = cmdline[:index + 1]
- suffix_help = "\n<i>One per CPU</i>"
- except:
- key = cmdline
- suffix_help = ""
- help = tuna.kthread_help(key)
- tooltip.set_markup("<b>%s %d(%s)</b>\n%s%s" % (_("Kernel Thread"),
- pid, cmdline, help,
- suffix_help))
+ help = tuna.kthread_help(cmdline)
+ tooltip.set_markup("<b>%s %d(%s)</b>\n%s" % \
+ (_("Kernel Thread"), pid, cmdline, _(help)))
return True
def foreach_selected_cb(self, model, path, iter, pid_list):
@@ -462,7 +458,7 @@ class procview:
dialog = gtk.MessageDialog(None,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
gtk.MESSAGE_INFO,
- gtk.BUTTONS_OK, help)
+ gtk.BUTTONS_OK, _(help))
dialog.set_title(title)
ret = dialog.run()
dialog.destroy()
diff --git a/tuna/help.py b/tuna/help.py
new file mode 100644
index 0000000..a318850
--- /dev/null
+++ b/tuna/help.py
@@ -0,0 +1,34 @@
+
+import gettext
+_ = gettext.gettext
+
+# gettext_noop
+def N_(s):
+ return s
+
+KTHREAD_HELP = {
+'kthreadd':N_('Used to create kernel threads via kthread_create(). It is the parent of all the other kernel threads.'),
+'posix_cpu_timer':N_('Per-cpu thread that handles POSIX timer callbacks. Timer callbacks are bound to a cpu and are handled by these threads as per-cpu data.'),
+'kondemand/':N_('This cpufreq workqueue runs periodically to sample the idleness of the system, increasing or reducing the CPU frequency to save power. \n[One per CPU]'),
+'sirq-rcu/':N_('Pushes the RCU grace period along (if possible) and will handle dereferenced RCU callbacks, such as freeing structures after a grace period. \n[One per CPU]'),
+'khelper':N_('Used to call user mode helpers from the kernel, such as /sbin/bridge-stp, ocfs2_hb_ctl, pnpbios, poweroff, request-key, etc."'),
+'group_balance':N_('Scheduler load balance monitoring.'),
+'kjournald':N_('Main thread function used to manage a filesystem logging device journal. This kernel thread is responsible for two things: <b>COMMIT</b>: Every so often we need to commit the current state of the filesystem to disk. The journal thread is responsible for writing all of the metadata buffers to disk. <b>CHECKPOINT</b>: We cannot reuse a used section of the log file until all of the data in that part of the log has been rewritten elsewhere on the disk. Flushing these old buffers to reclaim space in the log is known as checkpointing, and this thread is responsible for that job.'),
+'lockd':N_('Locking arbiter for NFS on the system'),
+'sirq-sched/':N_('Triggered when a rebalance of tasks is needed to CPU domains. This handles balancing of SCHED_OTHER tasks across CPUs. RT tasks balancing is done directly in schedule and wakeup paths. Runs at prio 1 because it needs to schedule above all SCHED_OTHER tasks. If the user has the same issue but doesn"t mind having latencies against other kernel threads that run here, then its fine. But it should definitely be documented that PRIO 1 has other threads on it at boot up. \n[One per CPU]'),
+'sirq-high/':N_('This is from a poor attempt to prioritize tasklets. Some tasklets wanted to run before anything else. Thus there were two tasklet softirqs made. tasklet_vec and tasklet_hi_vec. A driver writer could put their "critical" tasklets into the tasklet_hi_vec and it would run before other softirqs. This never really worked as intended. \n[One per CPU]'),
+'kblockd/':N_('Workqueue used to process IO requests. Used by IO schedulers and block device drivers. \n[One per CPU]'),
+'sirq-net-rx/':N_('When receiving a packet the device will place the packet on a queue with its hard interrupt (threaded in RT). The sirq-net-rx is responsible for finding out what to do with the packet. It may forward it to another box if the current box is used as a router, or it will find the task the packet is for. If that task is currently waiting for the packet, the softirq might hand it off to that task and the task will handle the rest of the processing of the packet. \n[One per CPU]'),
+'krcupreemptd':N_('This should run at the lowest RT priority. With preemptible RCU, a loaded system may have tasks that hold RCU locks but have a high nice value. These tasks may be pushed off for seconds, and if the system is tight on memory, the RCU deferred freeing may not occur. The result can be drastic. The krcupreemptd is a daemon that runs just above SCHED_OTHER and wakes up once a second and performs a synchronize RCU. With RCU boosting, all those that hold RCU locks will inherit the priority of the krcupreemptd and wake up and release the RCU locks. This is only a concern for loaded systems and SCHED_OTHER tasks. If there is an issue of RT tasks starving out SCHED_OTHER tasks and causing problems with freeing memory, then the RT tasks are designed badly.'),
+'ksoftirqd/':N_('Activated when under heavy networking activity. Used to avoid monopolizing the CPUs doing just software interrupt processing. \n[One per CPU]'),
+'sirq-timer/':N_('Basically the timer wheel. Things that add itself to the timer wheel timeouts will be handled by this softirq. Parts of the kernel that need timeouts will use this softirq (i.e. network timeouts). The resolution to these timeouts are defined by the HZ value. \n[One per CPU]'),
+'events/':N_('Global workqueue, used to schedule work to be done in process context. \n[One per CPU]'),
+'watchdog/':N_('Run briefly once per second to reset the softlockup timestamp. If this gets delayed for more than 60 seconds then a message will be printed. Use /proc/sys/kernel/hung_task_timeout_secs and /proc/sys/kernel/hung_task_check_count to control this behaviour. Setting /proc/sys/kernel/hung_task_timeout_secs to zero will disable this check. \n[One per CPU]'),
+'sirq-net-tx/':N_('This is the network transmit queue. Most of the time the network packets will be handled by the task that is sending the packets out, and doing so at the priority of that task. But if the protocol window or the network device queue is full, then the packets will be pushed off to later. The sirq-net-tx softirq is responsible for sending out these packets. \n[One per CPU]'),
+'sirq-block/':N_('Called after a completion to a block device is made. Looking further into this call, I only see a couple of users. The SCSI driver uses this as well as cciss. \n[One per CPU]'),
+'sirq-tasklet/':N_('Catch all for those devices that couldn"t use softirqs directly and mostly made before work queues were around. The difference between a tasklet and a softirq is that the same tasklet can not run on two different CPUs at the same time. In this regard it acts like a "task" (hence the name "tasklet"). Various devices use tasklets. \n[One per CPU]'),
+'usb-storage':N_('Per USB storage device virtual SCSI controller. Persistant across device insertion/removal, as is the SCSI node. This is done so that a device which is removed can be re-attached and be granted the same /dev node as before, creating persistance between connections of the target unit. Gets commands from the SCSI mid-layer and, after sanity checking several things, sends the command to the "protocol" handler. This handler is responsible for re-writing the command (if necessary) into a form which the device will accept. For example, ATAPI devices do not support 6-byte commands. Thus, they must be re-written into 10-byte variants.'),
+'migration/':N_('High priority system thread that performs thread migration by bumping thread off CPU then pushing onto another runqueue. \n[One per CPU]'),
+'rpciod/':N_('Handles Sun RPC network messages (mainly for NFS) \n[One per CPU]')
+}
+
diff --git a/tuna/tuna.py b/tuna/tuna.py
index e5768d3..25c2cb1 100755
--- a/tuna/tuna.py
+++ b/tuna/tuna.py
@@ -2,51 +2,29 @@
# -*- coding: utf-8 -*-
import copy, ethtool, os, procfs, schedutils
+import help
try:
set
except NameError:
from sets import Set as set
-kthread_help_str = {}
def kthread_help(key):
- if kthread_help_str.has_key(key):
- help = kthread_help_str[key]
- else:
- orig_key = key
- if key[-1:] == '/':
- key = "%s-" % key[:-1]
- helpfile1 = "/usr/share/tuna/help/kthreads/%s" % key
- helpfile2 = "help/kthreads/%s" % key
- try:
- f = file(helpfile1)
- except:
- try:
- f = file(helpfile2)
- except:
- return ""
+ if '/' in key:
+ key = key[:key.rfind('/')+1]
+ return help.KTHREAD_HELP.get(key, " ")
- help = reduce(lambda a, b: a + b, f.readlines())
- f.close()
- kthread_help_str[orig_key] = help
- return help
def kthread_help_plain_text(pid, cmdline):
cmdline = cmdline.split(' ')[0]
+ params = {'pid':pid, 'cmdline':cmdline}
+
if iskthread(pid):
- try:
- index = cmdline.index("/")
- key = cmdline[:index + 1]
- suffix_help = "\nOne per CPU"
- except:
- key = cmdline
- suffix_help = ""
- help = kthread_help(key)
- title = _("Kernel Thread %(pid)d (%(cmdline)s):") % {'pid':pid, 'cmdline':cmdline}
- help += suffix_help
+ title = _("Kernel Thread %(pid)d (%(cmdline)s):") % params
+ help = kthread_help(cmdline)
else:
- title = _("User Thread %(pid)d (%(cmdline)s):") % {'pid':pid, 'cmdline':cmdline}
+ title = _("User Thread %(pid)d (%(cmdline)s):") % params
help = title
return help, title