Skip to content

Commit 842f1a7

Browse files
committed
fix #36
1 parent 4078d07 commit 842f1a7

File tree

1 file changed

+63
-4
lines changed

1 file changed

+63
-4
lines changed

README.md

+63-4
Original file line numberDiff line numberDiff line change
@@ -653,11 +653,70 @@ source ~/.zshrc # Zshの場合
653653

654654
共有メモリ方式として、以下の2方式を選択できます。
655655

656-
* Shared Memory
657-
* Memory Mapped File
658-
そのため、代替の通信方式として、外部ファイルを MMAP でメモリ共有できるようにしました。
659-
MMAPファイルは
656+
* Shared Memory(SHM)※ Windows は未サポートでうs
657+
* Memory Mapped File(MMAP)
660658

659+
インストール直後は、デフォルトとして、SHM に設定されています。
660+
661+
**MMAP の特徴:**
662+
* ファイルベースのデータ共有:
663+
* MMAPはファイルベースで動作します。つまり、ディスク上のファイルを直接メモリにマッピングします。これにより、ファイルの内容を直接メモリ上で読み書きできるため、ディスクI/O操作を効率的に行うことができます。共有メモリと比べて、データの永続化が必要な場合に特に有利です。
664+
* 自動的なデータの同期:
665+
* メモリマップドファイルはオペレーティングシステムによって管理されるため、変更された内容は自動的にファイルに書き戻されます。これにより、プロセスがクラッシュした場合でも、マッピングされたファイルの内容は保持されるため、データの安全性が向上します。
666+
* 大きなデータセットの扱いやすさ:
667+
* MMAPは大きなファイルを扱う際に有利です。ファイル全体を一度にメモリにロードする代わりに、必要な部分だけをメモリにマッピングすることができるため、メモリ使用量を節約し、大きなデータセットの処理を効率化できます。
668+
* 柔軟性:
669+
* MMAPを使用すると、ファイルの特定の部分を異なるアドレス空間にマッピングすることができます。これにより、アプリケーションにとって都合の良い方法でデータにアクセスすることが可能になります。
670+
* ポータビリティ:
671+
* 多くのオペレーティングシステムがMMAPをサポートしているため、異なるプラットフォーム間でのアプリケーションの移植性が向上します。
672+
673+
インストール完了後、以下の方法で MMAP に設定変更できます。
674+
675+
```
676+
sudo bash hako-mmap-set.bash -p /var/lib/hakoniwa/mmap
677+
```
678+
679+
成功すると、`/etc/hakoniwa/cpp_core_config.json` が以下のように変更されます。
680+
681+
```
682+
{
683+
"shm_type": "mmap",
684+
"core_mmap_path": "/var/lib/hakoniwa/mmap"
685+
}
686+
```
687+
688+
MMAPファイルは、`core_mmap_path` 配下に自動作成されます。
689+
690+
また、MMAPファイルを `ramdisk` に配置するこで、処理性能を向上させることができます。
691+
692+
MacOSとLinuxの場合は、`hako-ramdisk.bash` を利用して `ramdisk` を作成できます。
693+
694+
作成した `ramdisk` パスを `hako-mmap-set.bash` で再設定することで反映されます。
695+
696+
**仕様:**
697+
```
698+
Usage:
699+
hako-ramdisk.bash -c /path/to -s size # Create a RAM disk with size in MB
700+
hako-ramdisk.bash -d /path/to # Delete a RAM disk
701+
hako-ramdisk.bash -l # List created RAM disks
702+
```
703+
704+
**例:64MBの `ramdisk``/Volumes/hakoniwa-ramdisk` に作成します。**
705+
```
706+
sudo bash hako-ramdisk.bash -c /Volumes/hakoniwa-ramdisk -s 64
707+
```
708+
709+
```
710+
% sudo bash hako-ramdisk.bash -l
711+
Listing RAM disks...
712+
/dev/disk4 is mounted at /Volumes/hakoniwa-ramdisk
713+
Operation completed.
714+
```
715+
716+
**`ramdisk` を削除したい場合:**
717+
```
718+
sudo bash hako-ramdisk.bash -d /Volumes/hakoniwa-ramdisk
719+
```
661720

662721
# 箱庭コマンド API
663722

0 commit comments

Comments
 (0)