Mac でコンテンツキャッシュの詳細設定を構成する
詳細構成パラメータを使って、ネットワーク構成に合わせてコンテンツキャッシュを微調整できます。
コンテンツキャッシュの詳細構成パラメータを設定するには、「ターミナル」でコマンドラインを使用するか、/ライブラリ/Preferences/com.apple.AssetCache.plist ファイルでキーの値を変更します。一部の変更を反映するには、コンテンツキャッシュを停止して再起動する必要があります。
「ターミナル」を使って詳細構成パラメータを設定する
Mac の「ターミナル」アプリケーション で、defaults
コマンドの後に sudo AssetCacheManagerUtil reloadSettings
コマンドを使用して、詳細構成パラメータを設定できます。コマンド AssetCacheManagerUtil settings
を使用すると、標準(詳細でない)設定が表示されます。
AssetCacheManagerUtil
コマンドについて詳しくは、コマンドラインからコンテンツキャッシュを管理すると AssetCacheManagerUtil(8) マニュアルページを参照してください。
defaults
コマンドを使用して、単純キーと複合キーの両方を設定できます。
たとえば、Interface
キーを en1 に設定するには、管理者として次のコマンドを実行します:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
ListenRanges
キーは、辞書の配列を取る複合キーです。たとえば、このコマンドを管理者として実行し、ListenRanges キー向けに 2 つの IP アドレス範囲を設定します:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist ListenRanges '( { first = 10.0.0.1; last = 10.0.0.254; }, { first = 10.1.0.1; last = 10.1.0.254; } )'
defaults コマンドを使用した後は、次のコマンドを実行してコンテンツキャッシュ設定を再読み込みしてください:
$ sudo AssetCacheManagerUtil reloadSettings
defaults
コマンドの使用について詳しくは、defaults(1) マニュアルページを参照してください。
キャッシュ設定 plist のキーと値
重要:com.apple.AssetCache.plist ファイルの設定は、以下の表で説明するもの以外は変更しないでください。
鍵は 2 つの値の間でクランプされる値を設定できます。キー値は、低い値以上、高い値以下の範囲内の数値にすることができます。下限値より下に設定すると、下限値が使用されます。上限値より上に設定すると、上限値が使用されます。たとえば、PeerDownloadTimeout は、5 以上、300 以下にクランプされます。値を 301 や 1000 に設定すると、300 に設定されます。値を 4 や -10 に設定すると、5 に設定されます。
AssetCacheManagerUtil reloadSettings
を実行すると、一部の設定が有効になります。そのほかの設定は、コンテンツキャッシュを停止してから再起動する必要があります。reloadSettings をサポートするキーだけは「コンテンツキャッシュ」環境設定でも設定できます(以下の表に記載)。「コンテンツキャッシュ」環境設定で値を設定するには、アップルメニュー >「システム環境設定」と選択して、「共有」をクリックしてから、「コンテンツキャッシュ」をクリックします。
キー | 説明 | デフォルト | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | 空きディスク領域が少なくなっているためにコンテンツキャッシュからコンテンツが消去されるときに、消去されるコンテンツがこの日数より前にコンテンツキャッシュに追加されている場合、空き領域が少なくなっているという通知を受信します。 | 30(日) | |||||||||
AllowCacheDelete | コンピュータでほかのアプリケーション向けにディスク領域が必要なときにキャッシュからコンテンツが自動的に消去されることを許可します。 | はい | |||||||||
AllowImports | 読み込み(アップロード)要求を許可します。 | はい | |||||||||
AllowPersonalCaching | ユーザの iCloud データのキャッシュを許可します。AllowPersonalCaching キーと AllowSharedCaching キーの少なくとも 1 つは、yes でなければなりません。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | はい | |||||||||
AllowSharedCaching | アプリケーションやソフトウェア・アップデートなどの iCloud 以外のコンテンツのキャッシュを制御します。AllowPersonalCaching キーと AllowSharedCaching キーの少なくとも 1 つは、yes でなければなりません。 | はい | |||||||||
AllowWirelessPortable | Wi-Fi ネットワークのみに接続しているノートブックコンピュータに対し、コンテンツキャッシュの実行を許可します。 | はい | |||||||||
CacheLimit | コンテンツキャッシュに使用されるディスク容量の最大バイト数。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | 0(無制限) | |||||||||
DatabaseUpdateInterval | コンテンツキャッシュが変更をディスク上のデータベースに保存する頻度。この間隔を長くすると、キャッシュされたコンテンツが停電後に失われるリスクが高まります。最大値は 3600 秒(1 時間)です。間隔 0 は、データベースのアップデートを常に遅れなく即座に行うことを意味し、パフォーマンスが低下します。 | 5(秒) | |||||||||
DataPath | キャッシュコンテンツの保存に使用されるディレクトリのパス。 この設定を手動で変更しても、キャッシュコンテンツは古い場所から新しい場所に自動的に移動することはありません。コンテンツを自動的に移動するには、「コンテンツキャッシュ」環境設定を使用します(「キャッシュボリュームを選択する」を参照してください)。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | /ライブラリ/Application Support/Apple/AssetCache/Data | |||||||||
DownloadMinRate | コンテンツキャッシュからコンテンツをダウンロードする間にクライアントが維持する必要がある、1 秒あたりの最小バイト数。これより遅い速度でデータが転送される場合、コンテンツキャッシュはダウンロードを停止します。クランプ最小値は 1000 バイト/秒です。 | 8000(バイト/秒) | |||||||||
DownloadTimeout | クライアントへのダウンロードが中止されるまでに許容されるアイドル時間(秒)。クランプ最小値は 10 秒です。 | 180(秒) | |||||||||
ImportMaxRate | コンテンツキャッシュが各クライアントからデータを受信するときの 1 秒あたりの最大バイト数。「0」は、速度(バイト/秒)に制限がないことを示します。 | 0(バイト/秒) | |||||||||
ImportMinRate | コンテンツを読み込み(アップロード)する間にクライアントが維持する必要がある、1 秒あたりの最小バイト数。これより遅い速度でデータが転送される場合、コンテンツキャッシュは読み込みを停止します。最小レートは 100 バイト/秒です。 | 2000(バイト/秒) | |||||||||
ImportRateAttenuation | アップロード時間に加味される減衰率。クランプの下限は減衰率 0 %です。値が大きすぎると、ImportTimeout を超えてしまい、失敗を引き起こします。 | 20(%) | |||||||||
ImportTimeout | クライアントからの読み込み(アップロード)が中止されるまでに許容されるアイドル時間の長さ(秒)。最小値は 10 秒です。 | 300(秒) | |||||||||
Interface | コンテンツキャッシュに使用されるネットワークインターフェイスの BSD 名。 | すべてのインターフェイスでリスン | |||||||||
ListenRanges | サービスが提供されるクライアント IP アドレスの範囲を示すディクショナリの配列。 ListenRanges キーの使用例は、以下を参照してください。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
ListenRangesOnly | ListenRangesOnly を true に設定すると、コンテンツキャッシュは ListenRanges キーで指定された範囲内のクライアントのみにコンテンツを提供します。 ListenRangesOnly キーを使用したい場合は、ListenRanges キーも指定する必要があります。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | いいえ | |||||||||
ListenWithPeersAndParents | コンテンツキャッシュが ListenRanges、PeerListenRanges、および Parents キーの共用体に登録されるか、ListenRanges キーにのみ登録されるかを示します。 ListenRanges は LocalSubnetsOnly から自動的に生成でき、PeerListenRanges は PeerLocalSubnetsOnly から自動的に生成できます。 | デフォルト値はコンピュータの履歴によって異なります:
| |||||||||
LocalSubnetsOnly | コンテンツキャッシュが、コンテンツキャッシュからアクセス可能なすべてのローカルネットワーク上のクライアントではなく、コンテンツキャッシュと同じ隣接ローカルネットワーク上のクライアントにのみコンテンツを提供するべきかどうか。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | はい | |||||||||
LogClientIdentity | コンテンツを要求しているクライアントの IP アドレスおよびポート番号をコンテンツキャッシュが記録するべきかどうかを決定します。 | いいえ | |||||||||
MaxConcurrentClients | この制限は、コンテンツキャッシュでファイルディスクリプタが不足しないようにするためです。Apple は、コンテンツキャッシュが 3400 のクライアントに同時に対応できることを保証するわけではありません。 | 3400 | |||||||||
MaxParentDepth | 1 つの要求に対し、子コンテンツキャッシュがその要求をペアレント・コンテンツ・キャッシュに転送する最大回数。 深すぎる(転送チェーンが長すぎる)要求は、ペアレントではなく起点へ強制的に転送されます。 | 8 | |||||||||
MaxPeersToQuery | コンテンツを要求するピア・キャッシュ・サーバの最大数。 | 0(無制限) | |||||||||
MetricsInterval | /ライブラリ/Application Support/Apple/AssetCache/Metrics/Metrics.db 内のメトリックデータベースにメトリック行を追加する頻度(秒)。
1 秒以上、60 秒以下にクランプされます。 これらのメトリックは「アクティビティモニタ」の「キャッシュ」パネルで見ることができます。 | 60(秒) | |||||||||
MetricsMaxAge | この日数より古いメトリックは、1 日に 1 回、メトリックデータベースから削除されます。クランプ最小値は 30 日です。 | 30(日) | |||||||||
OriginDownloadTimeout | Apple のサーバからのダウンロードが中止される(また、おそらくダウンロードが再試行される)までに許容されるアイドル時間の長さ(秒)。5 秒以上、300 秒以下にクランプされます。 | 60 | |||||||||
OriginUploadTimeout | 元のサーバへのアップロードが中止されるまでに許容されるアイドル状態の長さ(秒)。5 秒以上、3600 秒以下にクランプされます。 | 600 | |||||||||
ParentDownloadTimeout | ペアレント・コンテンツ・キャッシュからのダウンロードが中止される(また、おそらくダウンロードが再試行される)までに許容されるアイドル時間の長さ(秒)。5 秒以上、300 秒以下にクランプされます。 | 60 | |||||||||
ParentRetryInterval | ネットワーク障害またはサーバエラーが 5 回連続で発生した後、ペアレント・コンテンツ・キャッシュを無視する時間の長さ(秒)。30 秒以上、3600 秒以下にクランプされます。 | 900 | |||||||||
Parents | Apple に対して直接ダウンロードまたはアップロードする代わりに、このキャッシュがコンテンツをダウンロードまたはアップロードするべきほかのコンテンツキャッシュのローカル IP アドレスのリスト。 無効なアドレス、およびコンテンツキャッシュではないコンピュータのアドレスは無視されます。 使用不可になったペアレントキャッシュは、ParentRetryInterval に従ってスキップされます。 すべてのペアレント・コンテンツ・キャッシュが使用不可になると、ペアレント・コンテンツ・キャッシュが再度使用可能になるまで、コンテンツキャッシュは Apple から直接ダウンロードまたは Apple に直接アップロードします。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
ParentSelectionPolicy | 複数の構成済みペアレント・コンテンツ・キャッシュから選択するときに使用するポリシー。 各ポリシーでは、一時的に利用できないペアレントキャッシュはスキップされます。 以下のポリシーがあります:
この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | round-robin | |||||||||
ParentUploadTimeout | ペアレント・コンテンツ・キャッシュへのアップロードが中止されるまでに許容されるアイドル時間の長さ(秒)。5 秒以上、3600 秒以下にクランプされます。 | 600 | |||||||||
PeerDownloadTimeout | ピア・コンテンツ・キャッシュからのダウンロードが中止される(また、おそらくダウンロードが再試行される)までに許容されるアイドル時間の長さ(秒)。5 秒以上、300 秒以下にクランプされます。 | 30 | |||||||||
PeerFilterRanges | PeerFilterRanges が配列(ListenRanges のエントリーなどの配列)の場合、コンテンツキャッシュはその配列で指定された範囲に従ってピアのリストにフィルタと並べ替えを適用します。 コンテンツキャッシュは PeerFilterRanges 内のピアのクエリーのみを実行します。フィルタと並べ替えは、MaxPeersToQuery のエントリーでピアのリストが切り捨てられる(MaxPeersToQuery の設定が存在する場合)前に適用されます。 PeerFilterRanges が空の配列の場合、コンテンツキャッシュはどのピアのクエリーも実行しません。 PeerFilterRanges が論理値の true の場合、コンテンツキャッシュは上記と同じ処理を実行しますが、PeerFilterRanges の値ではなく ListenRanges を使用します。 PeerFilterRanges がほかのいずれかの型や値の場合、または指定されていない場合は、コンテンツキャッシュは MaxPeersToQuery のエントリーでピアのリストを切り捨てる前に、リストにフィルタも並べ替えも適用しません。 PeerFilterRanges は、このコンテンツキャッシュがコンテンツとダウンロードのクエリーを実行するほかのコンテンツキャッシュのリストのみに影響を及ぼします。ほかのコンテンツキャッシュから受信するコンテンツの要求には影響を及ぼしません。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
PeerListenRanges | PeerListenRanges がディクショナリの配列で、各ディクショナリが IP アドレスの範囲を表す場合、コンテンツキャッシュは、この範囲配列内に含まれる IP アドレスを持つコンテンツキャッシュからのピア・キャッシュ・クエリーにのみ正常に応答します。 PeerListenRanges が空の配列の場合、コンテンツキャッシュは、ほかのコンテンツキャッシュからのキャッシュクエリーにエラーを返します。 PeerListenRanges が論理値の true の場合、コンテンツキャッシュは、PeerListenRanges 値ではなく ListenRanges 値を使用して、ほかのどのコンテンツキャッシュからのキャッシュクエリーに正常に応答するかを決定します。 PeerListenRanges がほかのいずれかの型や値の場合、または値が指定されていない場合は、コンテンツキャッシュは、ほかのすべてのコンテンツキャッシュからのキャッシュクエリーに正常に応答します。 PeerListenRanges は、このコンテンツキャッシュがどのコンテンツキャッシュからのキャッシュクエリーに正常に応答するかということにのみ影響を及ぼします。このコンテンツキャッシュがコンテンツのクエリーを実行してコンテンツをダウンロードするピアのリストには影響を及ぼしません。 コンテンツキャッシュがキャッシュクエリーに対してエラーを返すと、クエリーの実行元コンテンツキャッシュは応答したコンテンツキャッシュをフレンドリでないとマークし、PeerRetryInterval が経過するまでフレンドリでないコンテンツキャッシュに再びクエリーを試みることはありません。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
PeerLocalSubnetsOnly | コンテンツキャッシュが、このコンピュータと同じパブリック IP アドレスを使用するコンテンツキャッシュとではなく、同じ隣接ローカルネットワーク上のほかのコンテンツキャッシュとのみピアを構成するべきかどうか。 PeerLocalSubnetsOnly が true の場合、コンテンツキャッシュは同じローカルネットワーク上のコンテンツキャッシュにのみクエリーを実行し、そのコンテンツキャッシュからのピアクエリーにのみ正常に応答します。 PeerLocalSubnetsOnly が true の場合、PeerLocalSubnetsOnly は PeerFilterRanges および PeerListenRanges の構成より優先されます。 PeerLocalSubnetsOnly が false の場合、コンテンツキャッシュは PeerFilterRanges および PeerListenRanges に従ってピアリング制限を構成します。 PeerLocalSubnetsOnly が true の場合にネットワークが変更されると、ローカル・ネットワーク・ピアリング制限がそれに応じてアップデートされます。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | はい | |||||||||
PeerNotifyTimeout | 起動時にピア・コンテンツ・キャッシュに「ping」するとき、ピア・コンテンツ・キャッシュからの応答を待つ時間の長さ(秒)。5 秒以上、300 秒以下にクランプされます。 | 30 | |||||||||
PeerQueryTimeout | ピア・コンテンツ・キャッシュにあるコンテンツについて照会するとき、ピア・コンテンツ・キャッシュからの応答を待つ時間の長さ(秒)。1 秒以上、60 秒以下にクランプされます。 | 5 | |||||||||
PeerRetryInterval | ピア・コンテンツ・キャッシュへの通知またはクエリーが 3 回連続で失敗した後、ピア・コンテンツ・キャッシュを無視する時間の長さ(秒)。再試行間隔の時間が経過すると、ピア・コンテンツ・キャッシュはコンテンツのクエリー先となるピアのリストに戻されます。30 秒以上、3600 秒以下にクランプされます。 | 900(秒) | |||||||||
PersonalCacheLimit | キャッシュされた iCloud データに対してコンテンツキャッシュが使用するディスク容量(バイト)。PersonalCacheLimit が CacheLimit を上回らないようにする必要があります。 | 0(無制限) | |||||||||
ポート | コンテンツキャッシュがアップロードまたはダウンロード要求を受け入れる TCP ポート番号。 | 0(ランダムなポートを使用) | |||||||||
PruneAffinitiesAge | この日数より古いユーザアフィニティが、アフィニティのキャッシュから自動的に削除されます。ユーザアフィニティは、パフォーマンス向上のため、コンテンツがキャッシュされる場所に関するヒントをクライアントに提供します。ユーザアフィニティの削除はキャッシュコンテンツには影響を及ぼしません。クランプ最小値は 7 日です。 | 30(日) | |||||||||
PruneAffinitiesInterval | コンテンツキャッシュが PruneAffinitiesAge の日数より古いユーザアフィニティをスキャンして削除する頻度(日)。iCloud のみで使用されるユーザアフィニティは、パフォーマンス向上のため、コンテンツがキャッシュされる場所に関するヒントをクライアントに提供します。ユーザアフィニティの削除はキャッシュコンテンツには影響を及ぼしません。クランプ最小値は 1 日です。 | 7(日) | |||||||||
PruneAssetsAge | ここで指定された日数の間に要求されなかったコンテンツは、コンテンツキャッシュから自動的に削除されます。クランプ最小値は 7 日です。 | 120(日) | |||||||||
PruneAssetsInterval | PruneAssetsAge で指定された日数よりも古いコンテンツをコンテンツキャッシュがスキャンして削除する頻度(日)。クランプ最小値は 1 日です。 | 7(日) | |||||||||
PublicRanges | クラウドサーバがクライアントとコンテンツキャッシュを照合するために使用するパブリック IP アドレスの範囲。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | デフォルトなし | |||||||||
ReservedVolumeSpace | キャッシュコンテンツを保存するボリュームに保持する空きディスク容量の最小バイト数。 | 2000000000(2 GB) | |||||||||
TerminationTimeout | コンテンツキャッシュが停止されているときに、登録解除を試行する時間の長さ(秒)。登録解除により、コンテンツキャッシュが使用できなくなったことがクライアントに通知され、クライアントはそのコンテンツキャッシュを(コンテンツキャッシュが再び開始されるまで)使用しなくなります。1 秒以上、60 秒以下にクランプされます。 | 10(秒) | |||||||||
Verbose | Verbose=true の場合、コンテンツキャッシュはそのアクティビティに関する詳細情報をログに記録します。ログの記録が増加すると、パフォーマンスが低下する可能性があります。この設定は、長期間の使用にはお勧めできません。 「ターミナル」アプリケーションで 例: 「コンソール」アプリケーションを使用してログを表示することもできます。 | いいえ |
ListenRanges キーの例
ListenRanges キーを使用して、同じパブリック IP アドレスの背後で複数のコンテンツキャッシュが使用される高度なネットワークトポロジで、優先されるコンテンツキャッシュを指定できます。
例:
caching1.example.com で、ListenRanges キーを使って 10.0.0.1 〜 10.0.0.254 および 10.1.0.1 〜 10.1.0.254 の範囲を指定し、ListenRangesOnly キーを No に設定します。
caching2.example.com で、ListenRanges キーを使って 10.1.0.1 〜 10.1.0.39 の範囲を指定し(caching1 の 2 つ目の範囲と重複していることに注意してください)、ListenRangesOnly キーを No に設定します。
IP アドレス 10.0.0.10 のクライアントがコンテンツを要求すると、要求は caching1 に送られます。
IP アドレス 10.1.0.10 のクライアントがコンテンツを要求すると、要求は caching1 または caching2 がランダムに選択されてどちらかに送られます。
IP アドレス 10.2.0.10 のクライアントがコンテンツを要求すると、要求は caching1 または caching2 がランダムに選択されてどちらかに送られます。
caching1 がシャットダウンされているか電源が切断されているが、caching2 は引き続き使用可能な場合は、すべてのクライアントからの要求が caching2 に送られます。
plist ファイルの例
以下は、サンプルの /ライブラリ/Preferences/com.apple.AssetCache.plist ファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CacheLimit</key>
<!-- Set a CacheLimit of 200 GB -->
<integer>200000000000</integer>
<key>DataPath</key>
<string>/Volumes/BigDisk/Library/Application Support/Apple/AssetCache/Data</string>
<key>Interface</key>
<string>en1</string>
<key>ListenRanges</key>
<array>
<dict>
<key>type</key>
<string>IPv4</string>
<key>first</key>
<string>10.1.2.1</string>
<key>last</key>
<string>10.1.2.254</string>
</dict>
<dict>
<key>type</key>
<string>IPv6</string>
<key>first</key>
<string>2001:500:88:200::1</string>
<key>last</key>
<string>2001:500:88:200::99</string>
</dict>
</array>
<key>LogClientIdentity</key>
<string>true</string>
<key>Port</key>
<integer>12345</integer>
<key>ReservedVolumeSpace</key>
<!-- Set the ReservedVolumeSpace to 1 GB -->
<integer>1000000000</integer>
</dict>
</plist>