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ネットワークのみに接続しているMacノートブックに対し、コンテンツキャッシュの実行を許可します。 | はい | |||||||||
CacheLimit | コンテンツキャッシュに使用されるディスク容量の最大バイト数。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | 0(無制限) | |||||||||
DatabaseUpdateInterval | コンテンツキャッシュが変更をディスク上のデータベースに保存する頻度。この間隔を長くすると、キャッシュされたコンテンツが停電後に失われるリスクが高まります。最大値は3600秒(1時間)です。間隔0は、データベースのアップデートを常に遅れなく即座に行うことを意味し、パフォーマンスが低下します。 | 5(秒) | |||||||||
DataPath | キャッシュコンテンツの保存に使用されるディレクトリのパス。 この設定を手動で変更しても、キャッシュコンテンツは古い場所から新しい場所に自動的に移動することはありません。コンテンツを自動的に移動するには、「コンテンツキャッシュ」環境設定を使用します(「キャッシュボリュームを選択する」を参照してください)。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | /ライブラリ/Application Support/Apple/AssetCache/Data | |||||||||
DisplayAlerts | コンテンツキャッシュの通知を表示します。 コンテンツキャッシュの効果を最大限に活用するには、この設定をオンにします。 | いいえ | |||||||||
DownloadMinRate | コンテンツキャッシュからコンテンツをダウンロードする間にクライアントが維持する必要がある、1秒あたりの最小バイト数。これより遅い速度でデータが転送される場合、コンテンツキャッシュはダウンロードを停止します。クランプ最小値は1000バイト/秒です。 | 8000(バイト/秒) | |||||||||
DownloadTimeout | クライアントへのダウンロードが中止されるまでに許容されるアイドル時間(秒)。クランプ最小値は10秒です。 | 180(秒) | |||||||||
ImportMaxRate | コンテンツキャッシュが各クライアントからデータを受信するときの1秒あたりの最大バイト数。「0」は、速度(バイト/秒)に制限がないことを示します。 | 0(バイト/秒) | |||||||||
ImportMinRate | コンテンツを読み込み(アップロード)する間にクライアントが維持する必要がある、1秒あたりの最小バイト数。これより遅い速度でデータが転送される場合、コンテンツキャッシュは読み込みを停止します。最小レートは100バイト/秒です。 | 2000(バイト/秒) | |||||||||
ImportRateAttenuation | アップロード時間に加味される減衰率。クランプの下限は減衰率0 %です。値が大きすぎると、ImportTimeoutを超えてしまい、失敗を引き起こします。 | 20(%) | |||||||||
ImportTimeout | クライアントからの読み込み(アップロード)が中止されるまでに許容されるアイドル時間の長さ(秒)。最小値は10秒です。 | 300(秒) | |||||||||
Interface | コンテンツキャッシュに使用されるネットワークインターフェイスのBSD名。 | すべてのインターフェイスでリスン | |||||||||
KeepAwake | コンテンツキャッシュがオンのときはコンピュータをスリープ解除したままにします。 使用可能なコンテンツキャッシュを増やすには、この設定をオンにするか、アップルメニュー >「システム環境設定」を選択し、「省エネルギー」をクリックしてから、「ディスプレイがオフのときにコンピュータを自動でスリープさせない」チェックボックスを選択します。 | いいえ | |||||||||
ListenRanges | サービスが提供されるクライアントIPアドレスの範囲を示すディクショナリの配列。 ListenRangesキーの使用例は、以下を参照してください。 typeサブキーは不要になり、指定した場合は無視されます。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
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は、このコンテンツキャッシュがコンテンツとダウンロードのクエリーを実行するほかのコンテンツキャッシュのリストのみに影響を及ぼします。ほかのコンテンツキャッシュから受信するコンテンツの要求には影響を及ぼしません。 typeサブキーは不要になり、指定した場合は無視されます。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
PeerListenRanges | PeerListenRangesがディクショナリの配列で、各ディクショナリがIPアドレスの範囲を表す場合、コンテンツキャッシュは、この範囲配列内に含まれるIPアドレスを持つコンテンツキャッシュからのピア・キャッシュ・クエリーにのみ正常に応答します。 PeerListenRangesが空の配列の場合、コンテンツキャッシュは、ほかのコンテンツキャッシュからのキャッシュクエリーにエラーを返します。 PeerListenRangesが論理値のtrueの場合、コンテンツキャッシュは、PeerListenRanges値ではなくListenRanges値を使用して、ほかのどのコンテンツキャッシュからのキャッシュクエリーに正常に応答するかを決定します。 PeerListenRangesがほかのいずれかの型や値の場合、または値が指定されていない場合は、コンテンツキャッシュは、ほかのすべてのコンテンツキャッシュからのキャッシュクエリーに正常に応答します。 PeerListenRangesは、このコンテンツキャッシュがどのコンテンツキャッシュからのキャッシュクエリーに正常に応答するかということにのみ影響を及ぼします。このコンテンツキャッシュがコンテンツのクエリーを実行してコンテンツをダウンロードするピアのリストには影響を及ぼしません。 コンテンツキャッシュがキャッシュクエリーに対してエラーを返すと、クエリーの実行元コンテンツキャッシュは応答したコンテンツキャッシュをフレンドリでないとマークし、PeerRetryIntervalが経過するまでフレンドリでないコンテンツキャッシュに再びクエリーを試みることはありません。 typeサブキーは不要になり、指定した場合は無視されます。 この値は「コンテンツキャッシュ」環境設定で設定することもできます。 | なし | |||||||||
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>