Set the cut path properly when a non-default output path is specified
[atscap.git] / atscap.MEMORY
blob66f121c5eb26ec5b5ba89e9c3b441363b4ac71f5
1 WARNING:
3         This may not work on memory-poor systems. More testing is needed.
5         It is recommended that you have at least 64MB RAM per DVB device,
6     not only for memory use of atscap but also for write caching to storage.
8         The maximum working set atscap requires for a 4 DVB-device system
9     is over 80MB. A single DVB-device can get by with around 20MB of maximum
10     memory usage, plus what is needed for hard drive cache to write files.
11     This is in addition to the kernel and various OS libraries, of course.
13         It's possible to build a system that boots to atscap instead of
14     login/bash, as long as all the modules are loaded and ready to run,
15     and all the libraries can be found (libc, libpng, librt, libatsc[?]).
16     A slow (400Mhz) CPU with 256M RAM should handle 4 DVB-devices nicely.
18         It's not much fun booting to single-user from my own testing of the
19     environment. It would be better to have PAM and a login for root to do
20     similar. This way a capture machine is not a useless piece of HDTV junk
21     and you can actually login to it and do other things with it.
22     This will help eventual goal of tiny system CD/USB boot.
25 Here are the latest memory usage stats on my machine.
28 This is when idle:
30  Static memory:
31         EPG + helpers        3,145,824 (8192 events x 376)
32        ATSC + helpers          345,856 (4 tables + vc 83616 + mg* 245760)
33        MPEG + helpers          222,128 (3 tables + pa 74432 + pids 106496)
34        Text + helpers          429,672
35        Chans & Timers          143,360
36         Search & Spam           39,936
37         Total static:        4,326,776 bytes
38  Dynamic memory:
39              http tts           24,972
40        Total dynamic:           24,972 bytes
41 Total memory:                4,351,748 bytes
44 This is when capturing Letterman (static is same as above):
46  Dynamic memory:
47              http tts           24,972
48           fifo buffer        9,699,296
49              EIT00-7F          527,360
50              ETT00-7F          527,360
51              frames[]        2,592,000
52           sequences[]          172,800
53        Total dynamic:       13,543,788 bytes
54 Total memory:               17,870,564 bytes
57     Old pchdtvr 1.0 was over 24M and older atscap versions were over 28M
58 of static memory usage. The static idle usage is much better now, with
59 the dynamic usage providing a little bit of memory help when not busy.
60 This is only something that users with 512M or less might notice.
62     Memory usage during cap is reduced with the smaller EPG, and some
63 creative bit shearing on the frames[] and sequences[] internal storage.
65 Memory usage -- Mode
67  4,351,748      IDLE
69  6,619,068      CAP INFO MANUAL
71  9,699,260      CAP INFO AUTOMATIC 
73 15,105,764      CAP MANUAL FULL CAP
75 17,870,564      CAP VC TIMER and CAP VC MANUAL
77     Idle uses minimum memory because of no FIFO, EIT/ETT or frame/sequences.
78 Manual EPG info uses small FIFO and no frames/sequences or copy of EPG data.
79 Automatic EPG info uses same as manual with copy of EPG for multi-channel.
80 Full cap does not allocate frames/sequences but needs EIT/ETT plus big FIFO.
81 VC cap uses EIT/ETT for EPG, frame and sequence for xtscut, plus big FIFO.
83     HTTP usage adds some dynamic allocations but they are too fast to see.
84 It is important when designing small systems to keep these in mind because
85 some of them are large enough to push you over a 32M total allocation.
87     You need a 9M FIFO or else you can't edit and cap to the same volume at
88 the same time, but EPG info cap seems happy enough with the smaller FIFO and
89 editing. If you always edit to a different volume, you can probably reduce the
90 normal capture FIFO to 4M or so. Or simply edit files only when it's idle. :)
92     2.5MB is the minimum recommended FIFOZ but even with that you're going to
93 have problems if using the volume for any intensive compiles or copies. XFS to
94 a real-time partition might help but it's a lot of bother for so little return.
97 WHY is FIFO% always non-zero even with a small fast RAM-only EPG info cap?
99     Tupari reported a dvico nano DVB driver post-AOS bug that requires it
100 to wait a bit before reading the DVB demux output. This is why the FIFO
101 always starts out with non-zero FIFO max%. In case you were curious, it also
102 limits how small you can make FIFOZ for EPG info cap. Keep in mind that the
103 size of the DVB kernel buffer may make a FIFOZ of less than that size useless.