> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 共有メモリサイズに制限がある環境で Linux 用 FRE を実行する

> 共有メモリが限られた環境でマルチプロセッシング モードを実行する際に、/dev/shm の代わりにカスタム tmpfs パスを使用するよう Linux 用 ABBYY FineReader Engine を設定します。

<Note>
  このトピックは Linux のみを対象としています。
</Note>

このトピックでは、Linux 用 FineReader Engine (FRE) をマルチプロセッシング モードで実行する際に、既定の `/dev/shm` ではなく、カスタムの一時ファイルシステム (tmpfs) を使用するように設定する方法を説明します。

この機能は、既定の共有メモリのマウントポイントに制限がある、または容量が小さすぎるうえ変更もできない環境で FRE を実行するユーザー向けです。たとえば、AWS Lambda、特定のコンテナ、その他のマネージド Linux 環境などが該当します。

<div id="overview">
  ## 概要
</div>

デフォルトでは、FRE for Linux は、マルチプロセッシング モードで実行される際の共有メモリの格納先として `/dev/shm` を使用します。共有メモリのマウント サイズが小さすぎると、処理中にエラーが発生することがあります。この問題を回避するには、十分な空き容量があり、必要に応じてサイズを変更できるカスタム tmpfs パスを使用するように FRE を設定できます。

次のような場合は、カスタム tmpfs パスを使用します。

* AWS Lambda または同様の環境で FRE を実行する場合
* `/dev/shm` のサイズが小さすぎ、増やせない場合
* 共有メモリの制限により、マルチプロセッシングが失敗する、または不安定になる場合

<Note>
  カスタム tmpfs パスは、マルチプロセッシングが有効な場合にのみ使用されます。

  MultiProcessingMode = `Auto` or `Parallel`
  ProcessesCount > 1
</Note>

<div id="configuring-a-custom-location">
  ## カスタム tmpfs パスの設定
</div>

FRE のカスタム tmpfs パスを設定する方法は、次の 2 つです。

* API
* INI ファイル

<div id="api-configuration">
  ### API の構成
</div>

API を使用してカスタム tmpfs パスを設定するには、[MultiProcessingParams オブジェクト](/ja/fine-reader/engine/api-reference/parameter-objects/multiprocessingparams) の `CustomTmpfsRootPath` プロパティを目的のパスに設定し、次に `UseCustomTmpfsRootPath` プロパティを `TRUE` に設定します。例:

```cpp theme={null}

CSafePtr<IMultiProcessingParams> multiProcessingParams;
engine->get_MultiProcessingParams( &multiProcessingParams );
multiProcessingParams->put_CustomTmpfsRootPath( "/dev/customShm" );
multiProcessingParams->put_UseCustomTmpfsRootPath( true );

```

<div id="ini-file-configuration">
  ### INI ファイルの設定
</div>

INI ファイルを使用してカスタム tmpfs パスを設定するには、INI ファイルを作成し、INI ファイルから設定をロードするために `LoadMultiProcessingParamsFromProfile()` を呼び出すようソースコードを変更します。

INI ファイルに次の行を追加します。

```ini theme={null}
[MultiProcessingParams]
CustomTmpfsRootPath = /dev/customShm
UseCustomTmpfsRootPath = true 
```

次に、コード内で INI ファイルをロードします：

```cpp theme={null}

engine->LoadProfile( "path/to/profile.ini" );
engine->LoadMultiProcessingParamsFromProfile();

```

<div id="performance-considerations">
  ## パフォーマンスに関する考慮事項
</div>

デフォルトの tmpfs パスを変更すると、特にカスタム tmpfs パスが tmpfs マウントではなく通常のファイルシステム上にある場合、パフォーマンスに悪影響が生じる可能性があります。最適なパフォーマンスとセキュリティを維持するため、カスタム tmpfs パスには可能な限り tmpfs マウントを使用してください。追加のパフォーマンスに関する詳細については、以下の「重要な注意事項」を参照してください。

<div id="important-notes">
  ## 重要な注意事項
</div>

1. SDK はファイルシステムの種類を検証しません。
   FRE は、tmpfs かどうかを確認せずに、指定されたパスをそのまま使用します。

   パスが tmpfs でない場合:

   * ファイルはメモリではなくディスクに書き込まれます
   * 処理速度が大幅に低下します
   * 一時データがディスク上に残る可能性があります

2. tmpfs は自分でマウントし、正しくマウントされていることを確認する必要があります。tmpfs マウントのサイズは、マウント時に `size` オプションを使用して調整できます。

   例:

   ```bash theme={null}
   mount -t tmpfs -o size=1G tmpfs /dev/customShm
   ```

   マウントされていない場合や設定に不備がある場合でも、FRE は実行されますが、正しく動作しなかったり、非効率になったりする可能性があります。

   <Note>
     カスタム tmpfs パスを使用しても、FRE に必要なメモリ量は減りません。
   </Note>

3. この変更で変わるのは、共有メモリの割り当て先だけです。メモリ制限については、引き続きシステム構成で管理する必要があります。

<div id="see-also">
  ## 関連項目
</div>

[MultiProcessingParams オブジェクト (IMultiProcessingParams インターフェイス)](/ja/fine-reader/engine/api-reference/parameter-objects/multiprocessingparams)

[LoadMultiProcessingParamsFromProfile メソッド](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface/supplementary-methods/loadmultiprocessingparamsfromprofile-method-of-the-engine-object)

[ABBYY FineReader Engine での並列処理](/ja/fine-reader/engine/guided-tour/advanced-techniques/parallel-processing/parallel-processing-in-linux)

[Properties の操作](/ja/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-properties)
