View Bug Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000400 | DCP-o-matic | Features | public | 2014-08-11 18:24 | 2023-09-01 21:50 |
Reporter | carl | Assigned To | carl | ||
Priority | immediate | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Target Version | 2.16.0 | ||||
Summary | 0000400: Copy to external distribution drive | ||||
Description | Reports on 25/2/21 that it's very slow writing to a 500GB spinning disk on macOS (estimates of 53h to write a 175GB DCP). | ||||
Tags | disk, major, next | ||||
Branch | |||||
Estimated weeks required | 8 | ||||
Estimated work required | Medium | ||||
parent of | 0001730 | closed | carl | Need to build lwext4 static on Linux or rename the .so |
parent of | 0001731 | closed | carl | Improve layout of conversational dialogues in _disk |
parent of | 0001738 | closed | carl | Installing the macOS package does not kill an existing _writer process |
parent of | 0001739 | closed | carl | macOS _writer needs to start on demand |
parent of | 0001740 | closed | carl | Some uninstaller needed for macOS package |
parent of | 0001741 | closed | carl | Test macOS with a mounted USB stick, trying to write to a second stick |
parent of | 0001743 | closed | carl | Improve progress estimation in disk |
parent of | 0001744 | closed | carl | Unmount fails on Linux when a drive's name has spaces |
parent of | 0001745 | closed | carl | disk automated testing |
parent of | 0001746 | closed | carl | Progress reporting for disk writes on Linux is bad |
parent of | 0001916 | closed | carl | disk writer fails to start writing if the disk is asleep |
parent of | 0001970 | closed | carl | polkit policy file is not installed for Linux |
parent of | 0001969 | closed | carl | If you manually unmount a drive on Linux the disk writer doesn't notice |
parent of | 0001968 | closed | carl | Disk writer doesn't escalate privileges to umount drives on Linux |
related to | 0001742 | acknowledged | Does disk fail with Paragon installed? | |
related to | 0001747 | closed | carl | Consider security of disk / disk_writer / nanomsg setup with malicious actors |
related to | 0001971 | closed | carl | Remove deadly warning from startup of disk writer, or stop distributing disk writer |
child of | 0000624 | acknowledged | Wizard mode |
|
Nice idea :-) |
|
https://www.ext2fsd.com/?tag=git |
|
make mingw builds lwext4 for Windows. |
|
Code that can make the partition table, filesystem & write a file in git:dcpdist. lwext4 pretty much works on Mac except that the call to ftello(dev_file) in file_dev_open returns 0 rather than the correct partition size - hardcoding that value seems to let it make a valid ext2 filesystem. |
|
The on disk filesystem should probably be ext3 for maximum compatibility. Please see: Maybe it is already? |
|
Unknowns:
|
|
DoM branch is git:dist |
|
Things to do:
|
|
Improving the windows DE; exploring
Then on a VM with /home mounted as Z: |
|
Seems to work but performance is terrible. Some notes... The first slow thing is The second slow thing is I think the underlying problem is that writes are randomly spread over the disk and are done in small blocks. For example, the This might be mitigated by the block cache but that never seems to coalesce writes. So when you It seems like the cleanest solution might be to remove the block cache altogether and just make sure that the whole of the block group "header" (i.e. group descriptions, block bitmap, inode bitmap, inode table) is written at the same time. Or maybe |
|
Exploring the walk of |
|
Strangely, simply selecting a 4096 byte block size speeds up formatting a lot (hours to minutes). I tried most of the things suggested above:
and all of them either made no difference or made things worse. |
|
Testing again on Mac with a 1TB external (spinning) USB drive, formatting is again very slow. Disk read/write use of about 150KB reported by activity monitor. Stuck in |
|
Tried to add this to |
|
Initialising the inode tables requires a lot of writes, and Another option might be to write the empty blocks using |
|
Another possible optimisation: |
|
The
Test case of copying 1.1Gb DCP from internal (spinning) disk to external (spinnnig) 2TB disk via USB on my old mac mini running Catalina. Activity monitor reports about 4MB/s data write during write part. Extrapolating to 175GB DCP: 14h Should test writing speed of this drive when mac formatted / throughput described by activity monitor; odd that we're seeing 10 times worse write speed. Also need to look again at what blocks are actually getting read/written during the write part. |
|
Did a bit of this looking and made |
|
That patch seems to make no real difference. |
|
Needless to say macOS can copy the DCP to the save drive (macOS formatted) in about 10s with >100MB write speed reported. |
|
Doing a simple stdio fwrite() in 4k blocks, 1GB, takes 10m57s with Using posix write() to /dev/rdisk, otherwise the same test takes 1m8s ~4x quicker. POSIX: block_size=4096 blocks=262144 gap=0 rdisk=0 nocache=0 time=64.286583
|
|
Format time: 03:07 Total 04:21 |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-08-11 18:24 | carl | New Bug | |
2014-09-13 00:04 | carl | Assigned To | => carl |
2014-09-13 00:04 | carl | Status | new => acknowledged |
2015-02-22 09:16 | andrew.levine | Note Added: 0000511 | |
2015-06-12 12:20 | carl | Severity | minor => feature |
2015-06-12 16:32 | carl | Estimated work required | => Major |
2015-08-27 16:56 | carl | Target Version | => 2.x |
2017-05-12 23:11 | carl | Relationship added | parent of 0000624 |
2019-01-30 00:56 | carl | Target Version | => 2.16.0 |
2019-03-12 22:19 | carl | Note Added: 0003139 | |
2019-06-10 22:50 | carl | Note Added: 0003373 | |
2019-06-11 02:01 | carl | Note Added: 0003374 | |
2019-10-24 22:57 | carl | Priority | normal => urgent |
2019-10-25 00:13 | mhm | Note Added: 0003502 | |
2019-11-02 22:57 | carl | Tag Attached: next-2 | |
2019-11-27 16:21 | carl | Tag Attached: major | |
2019-11-27 22:01 | carl | Estimated weeks required | => 8 |
2019-11-30 23:25 | carl | Note Edited: 0003374 | |
2019-11-30 23:32 | carl | Note Added: 0003617 | |
2019-12-01 14:30 | carl | Note Edited: 0003617 | |
2019-12-02 15:29 | carl | Note Edited: 0003374 | |
2019-12-02 15:36 | carl | Note Edited: 0003374 | |
2019-12-02 15:36 | carl | Note Added: 0003622 | |
2019-12-17 20:57 | carl | Tag Detached: next-2 | |
2019-12-17 20:57 | carl | Tag Attached: next | |
2020-01-20 00:14 | carl | Note Added: 0003716 | |
2020-03-16 23:37 | carl | Note Added: 0003752 | |
2020-03-17 00:12 | carl | Note Edited: 0003752 | |
2020-04-12 23:11 | carl | Relationship added | parent of 0001730 |
2020-04-12 23:12 | carl | Relationship added | child of 0001731 |
2020-04-12 23:15 | carl | Relationship replaced | parent of 0001731 |
2020-04-28 22:05 | carl | Note Added: 0003786 | |
2020-04-28 22:09 | carl | Note Edited: 0003786 | |
2020-04-29 00:21 | carl | Note Added: 0003787 | |
2020-04-29 00:23 | carl | Note Edited: 0003787 | |
2020-05-02 18:33 | carl | Note Added: 0003793 | |
2020-05-02 18:39 | carl | Relationship deleted | parent of 0000624 |
2020-05-02 18:39 | carl | Relationship added | child of 0000624 |
2020-05-02 18:39 | carl | Relationship added | parent of 0001738 |
2020-05-02 18:40 | carl | Relationship added | parent of 0001739 |
2020-05-02 18:41 | carl | Relationship added | parent of 0001740 |
2020-05-02 18:42 | carl | Relationship added | parent of 0001741 |
2020-05-02 18:43 | carl | Relationship added | parent of 0001742 |
2020-05-02 20:38 | carl | Relationship added | parent of 0001743 |
2020-05-02 23:18 | carl | Relationship added | parent of 0001744 |
2020-05-02 23:23 | carl | Relationship added | parent of 0001745 |
2020-05-02 23:38 | carl | Relationship added | parent of 0001746 |
2020-05-13 13:36 | carl | Relationship added | parent of 0001747 |
2020-05-17 20:47 | carl | Tag Attached: required | |
2020-05-17 20:59 | carl | Tag Detached: required | |
2020-05-17 20:59 | carl | Priority | urgent => immediate |
2020-07-05 23:32 | carl | Tag Attached: disk | |
2021-01-07 23:55 | carl | Estimated work required | Major => Medium |
2021-02-25 23:00 | carl | Description Updated | |
2021-03-03 21:03 | carl | Note Added: 0004146 | |
2021-03-03 21:03 | carl | Note Edited: 0004146 | |
2021-03-03 21:08 | carl | Note Edited: 0004146 | |
2021-03-03 21:11 | carl | Note Edited: 0004146 | |
2021-03-03 21:12 | carl | Note Edited: 0004146 | |
2021-03-03 21:18 | carl | Note Edited: 0004146 | |
2021-03-04 00:36 | carl | Note Edited: 0004146 | |
2021-03-05 21:12 | carl | Note Edited: 0004146 | |
2021-03-05 21:13 | carl | Note Edited: 0004146 | |
2021-03-05 21:24 | carl | Note Edited: 0004146 | |
2021-03-08 00:19 | carl | Note Added: 0004147 | |
2021-03-08 20:54 | carl | Note Added: 0004148 | |
2021-03-08 20:56 | carl | Note Edited: 0004148 | |
2021-03-08 20:57 | carl | Note Edited: 0004148 | |
2021-03-08 21:45 | carl | Relationship added | parent of 0001916 |
2021-03-08 22:49 | carl | Note Added: 0004149 | |
2021-03-09 00:13 | carl | Note Added: 0004150 | |
2021-03-09 00:15 | carl | Note Edited: 0004150 | |
2021-03-09 00:44 | carl | Note Edited: 0004150 | |
2021-03-09 00:44 | carl | Note Edited: 0004150 | |
2021-03-09 00:45 | carl | Note Edited: 0004150 | |
2021-03-11 23:33 | carl | Note Added: 0004151 | |
2021-03-12 19:32 | carl | Note Added: 0004153 | |
2021-03-12 19:45 | carl | Note Added: 0004154 | |
2021-03-12 21:10 | carl | Note Added: 0004155 | |
2021-03-12 21:20 | carl | Note Added: 0004156 | |
2021-04-21 20:08 | carl | Relationship added | parent of 0001970 |
2021-04-21 20:08 | carl | Relationship added | parent of 0001969 |
2021-04-21 20:08 | carl | Relationship added | parent of 0001968 |
2021-04-21 20:09 | carl | Relationship added | parent of 0001971 |
2021-10-02 08:09 | carl | Relationship deleted | parent of 0001742 |
2021-10-02 08:09 | carl | Relationship added | related to 0001742 |
2021-10-02 08:09 | carl | Relationship deleted | parent of 0001747 |
2021-10-02 08:09 | carl | Relationship added | related to 0001747 |
2021-10-02 08:09 | carl | Relationship deleted | parent of 0001971 |
2021-10-02 08:09 | carl | Relationship added | related to 0001971 |
2021-10-02 08:10 | carl | Status | acknowledged => resolved |
2021-10-02 08:10 | carl | Resolution | open => fixed |
2023-09-01 21:50 | carl | Status | resolved => closed |