問題タブ [smp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - SMP 実装後のカーネル パニック - init を強制終了しようとしました
Marvell PXA2128 ARM SoC の Linux カーネルに SMP サポートを実装する作業を行っています。基本カーネルとして Linus Torvald カーネルを使用しています。カーネルのバージョンは 3.5 です。Linux カーネルに SMP サポートを追加しました。2 番目のコアで起動できますが、「Init を強制終了しようとしました」というメッセージが表示されてカーネルがクラッシュすることがあります。つまり、initramfs の init プロセスが何らかの理由で停止します。セカンドコアのL1キャッシュが壊れていると思ったので、Linuxカーネルの実行に入る前にセカンドコアのL1キャッシュを無効化しました。カーネルのクラッシュログはこんな感じ
カーネルが正常に起動すると、 cat /proc/interrupts の出力は次のようになります
SMP の実装で欠けている重要な点を教えてください。
erlang - Erlang: VPS ホスティング下の SMP?
通常、Erlang が複数のコア (SMP) を VPS でホストされている状況で使用 (スケジューリング) することは可能ですか? 私は仮想ホスティングや xen などについてはあまり知りませんが、erlang は「仮想マシン インスタンス」に (他の多くのインスタンスと共に) 存在し、複数のコアにまたがるスケジューリングはないと推測しています。 .. 仮想マシン インスタンスに複数のコアがある場合を除きます。でも、それなら多分VIRTUALマルチコアでしょ?したがって、実際のコアにマップしない限り....
これは erlang でどのように機能しますか、または実際に、VPS でホストされた環境で erlang で機能しますか?
multithreading - マルチコア システム UMA NUMA を使用したプロセス アドレス空間
両方のプロセッサが共通の物理アドレス空間を共有している場合、マルチコアプロセッサアーキテクチャが関与する場合のプロセスアドレス空間の概念に疑問があります (これは UMA と呼ばれるものだと思います)。
したがって、32ビットプロセッサが4GBのアドレス範囲にアクセスでき、32ビットプロセスが実行中にこのスペースを所有する場合、2つのコアで2つの異なるプロセスを実行することはどのように可能でしょうか...両方のプロセッサが共通していると思うのでプロセッサーのアドレス空間。プロセッサのアドレス空間はプロセス数に分割されますか。スレッドの場合、個々のスレッドは同じアドレス空間にあるため、個々のプロセッサで実行できますが、複数のプロセスの場合はどうでしょう。
NUMAの場合はどうなりますか。
linux - Linux での smp アフィニティ設定
仮想マシン システムで割り込み (irq 75) の負荷を分散したいと考えています。64 ビットの redhat 5.8、カーネル 2.6.18 が搭載されています。仮想マシンには 8 個の CPU があります。
私が実行すると:
IRQ 75 が CPU0 のみで使用されていることがわかりました。次に、irq 75 の smp_affinity を変更しました。
しかし、irq 75 の割り込みが CPU0 のみを使用していることがわかりました。
CPU 間の IRQ バランスはありません。すべての割り込み (irq 75) をすべての CPU に分配したいのですが、何か問題がありますか?
linux - LinuxでCPUを起動する際にpen_releaseを使用する背後にある基本的な概念は何ですか?
Linux カーネル smp では、pen_release 識別子がセカンダリ CPU の開始に使用されます。また、他の場所でも使用されていることがわかりました。
sysdump でその値を確認し、ラウターバッハのセットアップでそれを理解しようとしましたが、これを使用する基本的な概念を理解できませんでした。
私が理解できる限り、これは一種のロックであり、プライマリ CPU からペンを解放するまでセカンダリ CPU をループに入れるために使用されます。この理解をさまざまな方法で確認しようとしましたが、あまり得られませんでした。
誰かがこれを詳細に説明できますか?
linux - セカンダリCPUの起動中にセカンダリコアがトリガーされる命令
セカンダリ CPU の起動は、プライマリ コアによって開始されます。cpu_up のホットプラグ操作を完了するために、一部の作業はプライマリ CPU で完了し、一部はセカンダリ CPU で完了します。
プライマリ cpu で実行され、セカンダリ cpu の起動をトリガーする正確な命令を見つけようとしています。さらに、pen_release 変数の値をチェックします。
SMPを有効にしたLinuxカーネルについて、セカンダリCPUの起動手順とpen_release globalの使い方を教えてください。
bare-metal - ベアメタルで Raspberry Pi 2 で追加のコアを起動するにはどうすればよいですか?
質問はかなり広いですが、ARMv7 ARM、MPCore TRM、GIC アーキテクチャ マニュアルなどの出発点を見つけることさえできませんでした。あいまいさを許してください。
アクティビティ LED、UART0、MMU、およびキャッシュを初期化する Raspberry Pi 2 用のシンプルなベアメタル カーネルがあり、すべてが機能します。まばたきをしたり、テキストを出力したり、物理ページを仮想アドレスにマッピングしてアクセスしたりできます。ここまでは順調ですね。
今、追加のコアを起動したいのですが、真空に陥っています。非常に多くのボードをサポートするため、かなり複雑な Linux カーネルを除いて、これを行う方法の例はまだありません。仕様を見ると、良い出発点が見つからないようです。だから、暗闇の中でぶらぶらする代わりに、私はここに来ました。:)
それで、他の誰かがこれを調べて、起動時とリセット時のコアの状態を把握しましたか? 追加のコアを起動するために使用されるブート プロトコル/メカニズムは何ですか? 私が見つけた1つの情報は、これはかなりSOC固有のものであるため、Cortex-A9またはRPi 2以外でこれを行う方法の例はありません.
linux-kernel - ISR を接続する前に割り込みがグローバルに無効になるのはなぜですか?
次のドライバーのプローブ機能を使用しています
プローブ機能の内部では、次のようにコメントされています
しかし、他のすべてのデバイス ドライバーの場合は TRUE であるとは思えません。この特定のネットワーク ドライバーの場合はなぜそうなるのでしょうか?
ISR を接続する前に割り込みがグローバルに無効になるのはなぜですか?