web-dev-qa-db-ja.com

パフォーマンスのためにパーティションとファイルを交換しますか?

パフォーマンスには何が良いですか?ディスクの内部に近いパーティションほどアクセス時間が遅くなるため、ドライブがOSとスワップパーティションを切り替えるのを待つ必要があります。

一方、スワップパーティションはすべてのファイルシステムをバイパスし、ディスクへの直接書き込みを可能にします。これはファイルよりも高速です。

パフォーマンスのトレードオフとは何ですか?

固定サイズのスワップファイルを使用すると、どれほどの違いがありますか?

スワップパーティションに変更する方が時間がかかる場合がありますが、スワップパーティション上にあるときは、スワップファイルの場合よりもパフォーマンスが向上しますか?

67
Bill Gray
  1. ハードディスクでは、多くの場合、データがディスクの外側の領域に近く格納されているため、ディスクの先頭に向かうほど、スループットとシークが高速になります。したがって、ディスクの最初にスワップを作成すると、パフォーマンスが向上する可能性があります。

  2. 2.6 Linuxカーネルの場合、スワップパーティションと 断片化されていない スワップファイル。スワップパーティション/ファイルがswaponによって有効にされると、 2.6カーネルは、スワップファイルが格納されているディスクブロックを検出します です。そのため、スワップするときに、ファイルシステムを処理する必要はありません。まったく。

したがって、スワップファイルが断片化されていない場合は、同じ場所にスワップパーティションがある場合とまったく同じです。または、別の言い方をすると、スワップパーティションをrawで使用するか、ファイルシステムでフォーマットしてからすべてのスペースを満たすスワップファイルを作成した場合、同じパフォーマンスが得られます。カーネルが直接使用します。

したがって、ファイルシステムが新しいときにスワップファイルを作成する場合(これにより、断片化されず、ボリュームの先頭にあることが保証されます)、パフォーマンスは、ボリュームの直前にスワップパーティションがある場合と同じになります。さらに、どちらかの側にファイルがある状態で、ボリュームの中央にswapfileを作成した場合、スワップのシークが少なくなるため、パフォーマンスが向上する可能性があります。

Linuxでは、スワップファイルがフラグメント化されずに作成され、拡張されない場合、少なくともext3/4のような通常のファイルシステムでは、フラグメント化できません。常に同じディスクブロックを使用します。

専用のスワップパーティションの唯一の利点は、拡張する必要がある場合に断片化が解除されることが保証されると私は結論付けています。スワップが決して拡張されない場合、新しいファイルシステムで作成されたファイルは追加のパーティションを必要としません。

33
Shay

sparse files を使用しない限り、実際にはそれほど大きな違いはありません。

Ddを使用して「通常の」ファイルを作成すると、(可能な場合は)1回の実行でファイルが割り当てられます。スパースファイルを作成すると、10 GBのファイルが存在しているにもかかわらず、実際にはすべてのスペースを使い果たしていないことがわかります。 mkswapがスペースを割り当てないかどうかはよくわかりませんが、通常、スワップファイルは時間とともに大きくなり、連続したセクター(ディスクの一部など)を割り当てませんが、必要に応じてブロックを割り当てます。時間の経過による断片化(もちろん、ディスクの使用状況による)

内部的には、Linuxカーネルはスワップファイルの基本ブロックに直接アクセスします-現時点ではリンクが見つからないため、誰かがより公式なものを見つけない限り、このリンクを信頼する必要があります。私が今思いつくことができるすべては:

これはすべて、2.6系のLinuxカーネルにのみ適用されます。

最適なパフォーマンスが必要な場合(そして、実際には何ですか?...スワッピングが遅い、期間です。RAMを増やして、スワップしないようにします)最高パフォーマンス)、パーティションを使用する必要があります。

25
serverhorror

これは興味深い質問で、同じことについてたくさん読んでいます。一般的に、ファイルシステムが基礎となるため、スワップパーティションはファイルよりも優れています。ただし、常にスワップのサイズを増やす必要がある場合は、ファイルの方が適しています。カーネル2.4までは、スワップパーティションの方がファイルよりも高速であると考えられていましたが、カーネル2.6の改善により、パフォーマンスはほぼ同じになりました。

インターネットで見つけたもの。

http://www.go2linux.org/swap-file-vs-swap-partition

そして

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html

3
Viky

現在の段階では、一時停止/スリープ時にスワップにデータを書き込む構成のラップトップを実行しているのでない限り、スワップは「最後の手段」と考える必要があります。ディスクにページングしないように、十分なRAMをボックスに入れることをお勧めします。

そうは言っても、ファイルの方がより柔軟ですが、パフォーマンスの観点からはパーティションの方がおそらくより良い方法です。 7200以上のRPMスピンドル上にあることを確認してください。

2
Matt Simmons

私たちの仕事では、スワップファイルが断片化する可能性があり、断片化によってスワップアクセスが遅くなるため、パーティションの方が適切なアプローチであると考えています。もちろん、静的サイズのスワップファイルを定義することはほとんど同じことを行いますが、これは主観的にすっきりしているように見えます。

このアプローチは真の方法ですか?おそらく10年近く前に設立されたので、そうではないでしょう。ここ数年のドライブテクノロジーの唯一の大きな変化は、使用するRAIDコントローラーの複雑さです(まだSSDには対応できません)。ドライブサイズの増加は、私たちが作成するスワップパーティションが、18 GBドライブが標準で出荷されていたときよりもドライブの先頭に近いことを意味します。そのため、スワップ速度は昔よりも速くなっています。

もちろん、ESXベースのWindowsシステムでは、スワップファイルの位置は完全に完全に問題です。スワップファイルと物理ディスクプラッターとの間には非常に多くの仮想化レイヤーがあり、それは問題ではありません。ただし、これは単なる標準であるため、別のパーティションに保存します。

2
sysadmin1138

スワップファイルを使用すると、ファイルからメモリへの変換に少し余分なメモリが使用される場合があります。 1GBのスワップあたり1MB未満のメモリについて話している。ファイルシステムキャッシュは、スワップされたデータをキャッシュしません。組織データのみをキャッシュします。これは、追加のメモリ要件のほとんどです。

それに加えて、おそらく1000回に1回の追加ヘッドシークを除いて、妥当なパフォーマンスを失うことはないと思います。

おもしろいことに、動的に拡張するスワップファイルと共にzswapを使用すると、未使用時のコストを最小限に抑えながら、スワップ操作を大幅に高速化できます。

0
Crass Spektakel