| OLD | NEW |
| 1 # Chrome's Blob Storage System Design | 1 # Chrome's Blob Storage System Design |
| 2 | 2 |
| 3 Elaboration of the blob storage system in Chrome. | 3 Elaboration of the blob storage system in Chrome. |
| 4 | 4 |
| 5 # What are blobs? | 5 # What are blobs? |
| 6 | 6 |
| 7 Please see the [FileAPI Spec](https://www.w3.org/TR/FileAPI/) for the full | 7 Please see the [FileAPI Spec](https://www.w3.org/TR/FileAPI/) for the full |
| 8 specification for Blobs, or [Mozilla's Blob documentation]( | 8 specification for Blobs, or [Mozilla's Blob documentation]( |
| 9 https://developer.mozilla.org/en-US/docs/Web/API/Blob) for a description of how | 9 https://developer.mozilla.org/en-US/docs/Web/API/Blob) for a description of how |
| 10 Blobs are used in the Web Platform in general. For the purposes of this | 10 Blobs are used in the Web Platform in general. For the purposes of this |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 optimistically include the blob data if the size is less than the maximimum IPC | 74 optimistically include the blob data if the size is less than the maximimum IPC |
| 75 size. | 75 size. |
| 76 | 76 |
| 77 # Blob Storage Limits | 77 # Blob Storage Limits |
| 78 | 78 |
| 79 We calculate the storage limits [here]( | 79 We calculate the storage limits [here]( |
| 80 https://cs.chromium.org/chromium/src/storage/browser/blob/blob_memory_controller
.cc?q=CalculateBlobStorageLimitsImpl&sq=package:chromium). | 80 https://cs.chromium.org/chromium/src/storage/browser/blob/blob_memory_controller
.cc?q=CalculateBlobStorageLimitsImpl&sq=package:chromium). |
| 81 | 81 |
| 82 **In-Memory Storage Limit** | 82 **In-Memory Storage Limit** |
| 83 | 83 |
| 84 * If the architecture is x64 and NOT ChromeOS or Android: `2GB` | 84 * If the architecture is x64 and NOT Chrome OS or Android: `2GB` |
| 85 * Otherwise: `total_physical_memory / 5` | 85 * Otherwise: `total_physical_memory / 5` |
| 86 | 86 |
| 87 **Disk Storage Limit** | 87 **Disk Storage Limit** |
| 88 | 88 |
| 89 * If ChromeOS: `disk_size / 2` | 89 * If Chrome OS: `disk_size / 2` |
| 90 * If Android: `disk_size / 20` | 90 * If Android: `disk_size / 20` |
| 91 * Else: `disk_size / 10` | 91 * Else: `disk_size / 10` |
| 92 | 92 |
| 93 Note: ChromeOS's disk is part of the user partition, which is separate from the | 93 Note: Chrome OS's disk is part of the user partition, which is separate from the |
| 94 system partition. | 94 system partition. |
| 95 | 95 |
| 96 **Minimum Disk Availability** | 96 **Minimum Disk Availability** |
| 97 | 97 |
| 98 We limit our disk limit to accomidate a minimum disk availability. The equation | 98 We limit our disk limit to accomidate a minimum disk availability. The equation |
| 99 we use is: | 99 we use is: |
| 100 | 100 |
| 101 `min_disk_availability = in_memory_limit * 2` | 101 `min_disk_availability = in_memory_limit * 2` |
| 102 | 102 |
| 103 ## Example Limits | 103 ## Example Limits |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 | 339 |
| 340 The `BlobMemoryController` is responsable for: | 340 The `BlobMemoryController` is responsable for: |
| 341 | 341 |
| 342 1. Determining storage quota limits for files and memory, including restricting | 342 1. Determining storage quota limits for files and memory, including restricting |
| 343 file quota when disk space is low. | 343 file quota when disk space is low. |
| 344 2. Determining whether a blob can fit and the transportation strategy to use. | 344 2. Determining whether a blob can fit and the transportation strategy to use. |
| 345 3. Tracking memory quota. | 345 3. Tracking memory quota. |
| 346 4. Tracking file quota and creating files. | 346 4. Tracking file quota and creating files. |
| 347 5. Accumulating and evicting old blob data to files to disk. | 347 5. Accumulating and evicting old blob data to files to disk. |
| 348 | 348 |
| OLD | NEW |