問題タブ [kvm]
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.
zlib - Qemu configure が zlib、pthread、および kvm missing エラーをスローする
新しいマシンで qemu バージョンを実行しようとしています。zlib1g-dev、zlib-bin などをインストールしました。whereis zlib を実行すると、
ソースからzlibもコンパイルしてインストールしようとしましたが、同じ問題がありました。
私が得る正確なエラーは
さらに、これにより出口をコメントアウトすると、
と
kvm モジュールが有効になっており、マシンがハードウェア仮想化をサポートしています。kvm-ok を使用して確認しました。lsmod は、kvm および kvm_intel モジュールを表示します。
私はこれらのエラーについて本当に困惑しています。どんな助けや指針も大歓迎です。
virtualization - ゲストOSプロセスはいつでもVCPUを占有しますか?
最近、ハードウェアがサポートする仮想化について調べています。
ホスト cpu の 3 つの状態について読みました。したがって、最も一般的なユーザー空間、カーネル空間、および新しいゲスト状態です。ps コマンドからわかるように、開始した vm のプロセスと、いくつかの「サブ」スレッドがあります。仮想マシンが所有する各CPU。また、vmがio関連のプログラムを実行すると、ホスト上にさらにスレッドが作成されることに気付きました。これは、ハードウェアエミュレーションのqemuの応答である可能性があります。
だからここに私の質問があります:特定の時間(他の2つではなくゲスト状態の時間)、vcpuスレッドは実行中のゲストOSプロセスを表しますか(「占有」と「排他的」を意味します)?物理CPUとまったく同じです、ユーザー空間内の任意の時間、ユーザープロセスが実行されています。これは少しばかげているように聞こえるかもしれませんが、さらなる研究のためにそれを理解したいだけです。
この質問を簡単にするために: ホスト マシンで実行される vcpu スレッドは、常に何らかのゲスト OS プロセスに関連付けられていますか?
さらに単純化すると、ゲスト OS プロセスが実際にホスト CPU 上で直接実行され、通常のホスト プロセスとしてスケジュールされていると言うのは正しいでしょうか?2 種類のプロセスの違いは、仮想化と呼ばれるものですか?
ゲスト OS プロセスの切り替えに関するいくつかの質問を解決するために、別のスレッドが必要になるかもしれませんが、その前に、皆さんがこのスレッドで私を助けてくれることを願っています。
よろしくお願いします
linux-kernel - native_apic_mem_write と native_apic_msr_write の違いは?
私は Linux カーネルを初めて使用し、それについてあまり知りません。何らかの理由で、Linux ホスト カーネルと kvm ゲスト カーネルのレイテンシの問題も追跡する必要があります。ここで、native_apic_msr_write (これはLinux ホスト カーネルで使用されます) とnaitve_apic_mem_write ( kvm guset カーネルで使用されます) を比較する必要があります。
私の限られた知識に基づいて、これら 2 つの関数呼び出しのソース コードを読み取ろうとしましたが、native_apic_msr_write が msr レジスタに値を書き込むために使用されていると思います (これが正しいことを願っています)。私の問題は、native_apic_mem_write が ALTERNATIVE と呼ばれるインライン アセンブリを呼び出すため、何をするのか理解できないことです。
以下にコードを添付しました。内部で何が起こっているのか説明できる人はいますか?非常に詳細である必要はありません。どんな情報でも役に立ちます、ありがとう。
kvm - veewee で KVM を作成するには?
veeweeでKVMを作成する方法に関する短いチュートリアルを探しています。veeweeを使用して、アプリケーションのニーズに合った OS を構築したい
memory - qemu メモリ操作
Qemu を使用して、x86 ゲスト オペレーティング システムの実行用のメモリ トレースを生成するつもりです。
tcg wiki ページによると、Qemu はいくつかのヘルパーを使用して、ターゲット (ゲスト) メモリへのロード/ストアを生成します。この命令のリストはtcg_gen_qemu_ld8s/u
、、、、tcg_gen_qemu_ld16s/u
です。(店舗案内用に同様のセットをご用意しております)。上記の関数へのすべての呼び出しをtarget-i386/translate.cファイルにトラップしていますtcg_gen_qemu_ld32s/u
tcg_gen_qemu_ld64
ただし、次のような特定の命令のロード/ストアがまだありません
質問:
- 誰かが私が見逃している他のロード/ストアポイント(直接または間接)を指摘できますか??
- qemu は
guest_read()
、ゲストメモリからのすべてのロードをトレースするためにインストルメント化できる、ゲストメモリへのアクセス用の単一のエントリポイント機能 ( など) を提供しますか??? - qemuがゲストメモリの状態を維持する方法を理解できる優れたドキュメントを誰かが指摘できますか??
前回のメールで誤解を招くような指示をしてしまい申し訳ありません。
上記のすべての指示がtcg_gen_ld/st
ヘルパーでカバーされているようです。
しかし今、私は別の問題に出くわしました:
私は当初、ゲスト メモリとのやり取りはすべて、translate.c ファイルのヘルパー命令によって行われると考えていました。cmpxcgh8b
ただし、一部の命令のヘルパー関数cmpxchg16b
は、実際にゲスト メモリにアクセスしていることがわかりました。
では、ゲスト メモリを読み取るためのエントリ ポイントが複数あるということですか。ゲストメモリにアクセスするために ldq および stq 命令がどのように変換されるのか説明してください。
ssh - KVM/ブリッジ: ホストへのルートがありません
KVM を使用して Fedora 17 に VM をセットアップし、KVM 用のブリッジ ネットワークを構成しました。ホストと VM の両方が手動 IP 構成を使用し、ホストの IP は 192.168.0.2、VM の IP は 192.168.0.10 です。VM から問題なくホストに接続できますが、ホストから KVM に ping を実行できますが、ホストから VM に SSH 接続できません。ssh しようとすると、「ホストへのルートがありません」という結果が得られます。
ああ、私は iptables を無効にしているので、これはファイアウォールの問題ではないと思います。
qemu - Kvm/Qemuの最大VMカウント制限
研究プロジェクトでは、Ubuntuサーバー12.04のKVMで、python libvirtバインディングを使用して、できるだけ多くのVMを起動しようとしています。すべてのVMは、起動後にアイドル状態に設定され、最小量のメモリを使用します。せいぜい1000個のVMを単一のホストで起動できました。その時点で、CPUとメモリの両方の使用量が制限(48コアAMD、128GBメモリ)に近づいていない場合でも、カーネル(Linux 3x)が応答しなくなりました。これにより、数百のVMが実行された後、起動プロセスが連続的に遅くなりました。
Linuxカーネル自体はこのいくつかのプロセスを問題なく処理できるはずなので、これはKVM/Qemuドライバーに関連している必要があると思います。ただし、Qemuドライバーがマルチスレッドになったことを読みました。この遅さの原因が何であるか、または少なくともどこから探し始めるべきかについてのアイデアはありますか?
python - 仮想マシンを起動するための KVM API
Pythonスクリプトから簡単なコマンドを使用してKVM仮想マシンを起動できるKVM APIがあるかどうか疑問に思っていました.
私の Python スクリプトは一連のチェックを実行して、特定の VM を起動する必要があるかどうかを確認します。必要に応じて VM を起動したいと考えています。
今必要なのは API 呼び出しを見つけることだけですが、libvirt Web サイト内でそれらを開始するための単純な呼び出しが見つかりません。これが可能かどうか誰にもわかりますか?
c - コードの流れを追跡し、保存する
プログラム(自分のプログラム、またはオープンソースプログラム)をコンパイルする方法があるのだろうかと思っていました。それを実行すると、そのプログラムの流れをたどることができます。理想的には、プログラムの実行時に実行される特定のメソッドを出力したいと思います。特定のメソッドを呼び出すたびに、それが実行されたことを出力したいので、後で分析するためにファイルに保存したいと思います。
たとえば、KVM(オープンソースハイパーバイザー)内のフローをよりよく理解しようとしていますが、明らかにコード行が多く、おそらく数週間かけてコードがどこにあるのかを知ることは不可能です。
私が見ているコードは主にCで書かれていますが、他の言語も使用しています。何かアイデアはありますか?
linux-kernel - システムコール fork で kvm vm のクローンを作成します
qemu-kvm プロセスとして提示される KVM VM。場合によっては、VM のクローンを作成したい場合、fork を使用しないのはなぜですか? 私が見ているように、少なくとも2つの利点があります。
- サブ VM はコピー オン ライトでメモリを共有し、メモリ消費を削減します。
- コピー オン ライトを使用してオンザフライで VM を複製する
もちろん、解決すべき問題がいくつかあります。
- メイン VM イメージ ファイルを共有するディスク コピー オン ライトを設計します。
- サブ VM IO をリダイレクトします。