XV6でタイマ割り込みはどのように発生しますか?
thread_schedule()thread_yield()現在のスレッドのレジスタと状態を保存し、次のスレッドのレジスタと状態をロードすることが目的である、などの関数を使用してスレッド切り替えを実装しました。 これで、タイマー割り込みを使用してxv6で同じことをしたいのですが、どのように機能するのかわかりません。 ...
thread_schedule()thread_yield()現在のスレッドのレジスタと状態を保存し、次のスレッドのレジスタと状態をロードすることが目的である、などの関数を使用してスレッド切り替えを実装しました。 これで、タイマー割り込みを使用してxv6で同じことをしたいのですが、どのように機能するのかわかりません。 ...
Linuxスレッドまたはフォークされたプロセスは、psファイルシステムおよび/またはそのコマンドラインに表示される名前を変更できます/proc。 このパッケージを使用すると、、、、およびの2番目のフィールドpython-setproctitleにも同じ変更が発生します。これには全長のみが表示され、変更された名前の最初の15文字は残りの3つの場所に表示されます。/proc/pid/cmdline/proc/pid/commName:/proc/pid/status/proc/pid/statcmdline マルチスレッドプロセスを見ると、ruby外観は/pro...
8つの高い優先順位(nice = -20)OSスレッド(私が持っているコアの数)でCPUを「フラッディング」すると、明らかな理由でタスクは「一時停止」されますが、それでも使用できます。 「高い優先順位スレッド」とは、同じ高優先順位プロセスによって生成されたスレッドを意味します。 ただし、64のスレッドがあると、コンピュータが完全に利用できなくなります。最大優先順位スレッドとコア間の展開の関係は何ですか?与えられた良い値を達成するためにCPUを完全にフラッディングするには、どのくらいのスレッドを作成する必要があるかを大まかに計算できますか? ...
検索しましたが、似たようなものが見つかりませんでした。 ext4 形式の NVME ドライブ (SAMSUNG 980Pro など) に、大容量コードベース (AOSP または Yocto) が保存されています。これらのコードベースは、数千のサブディレクトリにある数十万のファイルで構成されることがよくあります。 ファイルを検索するために find を使用する場合、通常は次のようにします。 find . -iname "filename.txt" 私はファイルを操作したくないだけでファイルを探したいと思います。 私はこれがマルチスレッドだとは思いません(私が...
最新のハードドライブは「高度なフォーマットたとえば、デフォルトでは512/4096の論理/物理セクタサイズを報告します。 デフォルトでは、ほとんどのLinuxフォーマットツールは4096バイトのブロックサイズを使用します(少なくともDebian / EXT4ではデフォルト値です)。 これまで私はこれが最適化だと思いました。 Linux / EXT4は、論理セクタサイズが512Kであるにもかかわらず、4KブロックをHDDに転送して最適に処理します。 ところで今日は読んだ。この最近の (2021) 投稿。その人は、HDDの論理セクタサイズを512eから4Knに切...
私は私が作成したLinux cgroupにアプリケーションスレッドのいくつかを明示的に書いています。cpuたとえば、今はv1について話していますが、v2の方法を知っていればいいでしょう。 ただし、子スレッド(pthread_create()親スレッドの呼び出しで作成したり、cgroupに明示的に書き込んだり、親スレッドの後に再構築したスレッド)も、直接作成せずにcgroupに表示されることがわかります。 これはアプリケーションに悪影響を及ぼす可能性があります。いくつかのスレッドが予期せずcgroupに到達します。常にこの警告に注意し、スレッドプールなどの事項...
Intelファミリの12世代以上のチップ(および私が知っている限り、ARMチップ)には、クロック速度が異なるさまざまなクラスのコアがあります。 Pコアは性能を向上させ、クロック速度を上げます。 Eコアはエネルギー効率を向上させ、クロック速度を下げます。 これは、周波数を制限できるチップだと私が理解しているものとは異なりますが、コア全体で同じです。 スレッドをPコアまたはEコアクラスにバインドする方法はありますか? ...
私が読んでいる本(2013年)によると、Linuxカーネルは、プロセス内の移行がプロセス間の移行よりもはるかに安いと述べています。同じ CPU で同じプロセスの 2 つのスレッドを切り替えると時間が節約されます。ページテーブルコンバージョンコスト。 したがって、同じプロセスの2つのスレッド/タスク間の切り替えは、関連していないタスク間の切り替えよりも安価です。 Linuxカーネルは、パフォーマンスを向上させるためにプロセス内の移行の可能性を高めるために、どのように(プロセスの好みに加えて)試みますか? そうでない場合、これはどのくらいの頻度で発生しますか?実...
私はCPUコアで実行されるスレッドを持つ単純なプログラムを書いています。わずかに積極的に回転し、CPUコアを100%使用します。top+でこれを見ることができます1。 N分後に次のことを知りたいです。 カーネルは実行中のスレッドを何度もプリエンプション(中断)しますか? ...
cppマルチスレッドプログラムは、すべてのsigwaitスレッドが生成され、プログラムが初期化された後、メイン関数の最後にLinux実装のコピーを使用します。 sigset_t mask; struct sigaction sa; signal(SIGPIPE, SIG_IGN); sigemptyset(&mask); sigaddset(&mask, SIGINT); sa.sa_flags = SA_SIGINFO | SA_NODEFER; sa.sa_sigaction = ha...
使っていますささやき.cpp一部のサウンドファイルをコピーします。これはCPU集約的なプロセスなので、最適な設定を見つけようとし、スレッド設定(-t)でいくつかのテストを実行しましたが、結果は非常に混乱しました。私が実行したコマンドは次のとおりです。 date; time ./main -t [number of threads] -m ggml-model.bin -f 5min-16kHz.wav; date 私は6つのコア(+ 6つのハイパースレッディングコア)を備えたIntel i7を搭載したMacbook Proでこれを実行しています。 デフォル...
ラウンドロビンスケジューリングを使用して、カーネルはさまざまなプロセス/タスクに時間を提供します。 タイマーがタイムアウトすると、カーネルがタイマーを初期化し、現在の操作が中断されてからカーネルが制御権を持つようになります。 カーネルは、新しいタスクをスケジュールするためにタイマータイムアウト割り込みを使用する必要があることをどうやって知ることができますか?スケジューラだけでなく、さまざまな目的で異なるタイマーを使用している場合はどうなりますか?さまざまな割り込みサービスルーチンはどこに行きますか?よろしくお願いします。 ...
私は現在Linuxを学んでいます。私はスレッドがLinux上の軽いプロセスであることを知っています。しかし、スレッドスタックスペースがどこから出てくるのか知りたいです。 スレッドのスタックはプライベートです。これはプロセススタックとは無関係です。私の検索によると、一部の人々はスレッドスタックですmmap()。スタックとヒープの間にあります。したがって、スレッドスタックはプロセスのメモリマップされたセグメントから来ます。そうですか?mmap()heap ...
バックアップ戦略をアップグレードするためのLinuxバックアップツールを探しています。 現在、私はLinuxサーバー(Ubuntu 20.04)で毎日フルバックアップを実行しています。私は仮想化システムへの依存を避けるために(LinuxおよびLAMP&Coツールを使用してすべての種類のサーバーで再起動できるように)、VM内で直接データをバックアップし、別のサイト(VMware vSphereレベルではない)に送信することを好みます。 私たちは100万を超えるファイル(csv、json、xlsx)とほぼ1Toのデータを持っています。圧縮後、lbzip2とマルチ...
FreeBSDカーネルのセマフォがMutex + CVほど効率的ではないことを読みました。このマニュアルページ。 POSIXセマフォのカーネルとシステムコールの実装を確認しました。源泉 パスワードそしてMutex + CVの上に実装されていることを確認してください。 おそらく私の誤解リアルタイム同期プリミティブであるPOSIXセマフォは非常に効率的です。しかし、これを読んだ後、それがどれほど効率的かわかりません。 さらに、本も読んでいます。同時プログラミング:アルゴリズム、原理、基本。私はまだ最初の部分を読んでいませんが、セマフォの上に実装されたモニター(C...