OSDN Git Service

Updated FAQ document for the new 'number of instances' algorithm.
authorlordmulder <mulder2@gmx.de>
Sat, 26 Nov 2011 21:28:00 +0000 (22:28 +0100)
committerlordmulder <mulder2@gmx.de>
Sat, 26 Nov 2011 21:28:00 +0000 (22:28 +0100)
doc/FAQ.html
etc/Translation/Blank.ts
etc/Translation/LameXP_PL.ts
src/Config.h

index 9d0d167..6b47734 100644 (file)
@@ -36,7 +36,7 @@ a:visited { color: #0000EE; }
 <li><a href="#df406578">The LameXP startup (splash screen) takes very long on my system. What can I do?</a>
 <li><a href="#900a2a6c">Is there a way to hide/show the LameXP console ("DOS Box") window?</a>
 <li><a href="#9b0a5c32">Why does application 'xyz' not open the Wave files created by LameXP?</a>
-<li><a href="#89cbd3d0">Why does LameXP run only 'n' parallel instances/threads on my computer?</a>
+<li><a href="#89cbd3d0">Why does LameXP run (only) N instances/threads in parallel on my computer?</a>
 <li><a href="#12d077d5">How can I force LameXP to create ID3 version 2 (ID3v2) tags?</a>
 <li><a href="#d83ab3c6">Why does LameXP use LAME v3.99 rather than v3.98?</a><br>
 <li><a href="#4213adbc">Can LameXP be used to convert/extract tracks from an Audio CD?</a>
@@ -464,22 +464,38 @@ You can use a command-line like this:<br>
 
 <br><br>
 
-<a name="89cbd3d0"></a><b>Why does LameXP run only 'n' parallel instances/threads on my computer?</b><br>
+<a name="89cbd3d0"></a><b>Why does LameXP run (only) N instances/threads in parallel on my computer?</b><br>
 <br>
-By default LameXP will detect the number of CPU cores that are available on your system and run as many<br>
-encoder/decoder instances in parallel as CPU cores are available. This is done in order to maximize the CPU<br>
-usage on modern multi-core processors and thus speed up the overall encoding process. However be aware that<br>
-the number of instances that can run in parallel is also limited by the number of files you are converting.<br>
-Consequently the number of instances that will run in parallel is the minimum(!) of the number of CPU cores<br>
-and the number of files to convert. Moreover the number of parallel instances is currently bounded at four!<br>
+LameXP is able to run multiple instances of the encoder or decoder in parallel. This is done in order to<br>
+maximize the CPU utilization on modern "multi-core" processors, which will significantly speed up the overall<br>
+encoding process. However be aware that LameXP uses file-based parallelization. This means that the maximum<br>
+number of instances that can run in parallel is limited by the number of files that are processed. If, for<br>
+example, you convert only a single file, then NO parallelization will be possible. If, instead, you convert<br>
+multiple files at once, then LameXP can run as many instances in parallel as files are being converted.<br>
 <br>
-Limiting the maximum number of parallel instances to exactly four might seem somewhat arbitrary. But the more<br>
-instances are running in parallel, the more instances will be competing for the hard disk. At some point this<br>
-will result in "HDD trashing" and actually slow down the encoding process! The limit will prevent this<br>
-situation on computers with a lot of CPU cores. If, however, you want to use even more (or fewer) instances,<br>
-then you can use LameXP's option to manually overwrite the maximum number of parallel instances/threads.<br>
+Within the aforementioned limitations, LameXP will selected the number of parallel instances based on the<br>
+number of available processors (CPU cores) on the individual system. However LameXP will NOT use a one-to-one<br>
+mapping! Instead a custom-made 'cubic spline' function is used to map the number of CPU cores to the maximum<br>
+number of instances. This function has the following properties: On systems with at most four CPU cores, the<br>
+maximum number of parallel instances will be identical to the number of CPU cores. On systems with eight CPU<br>
+cores, the maximum number of parallel instances is six. On systems with 16 cores, the maximum number of<br>
+parallel instances is eight. On systems with 32 cores, the maximum number of parallel instances is ten. And<br>
+on systems with 64 cores, the maximum number of parallel instances is twelve. Twelve is the upper limit.<br>
 <br>
-Also be aware that LameXP only controls the number of instances that will run in parallel, but it does NOT<br>
+<a href="http://img265.imageshack.us/img265/9200/cpucoresmapping.png" target="_blank"><img src="http://img265.imageshack.us/img265/9200/cpucoresmapping.th.png" border="0" alt="thumb"></a><br>
+<br>
+You may wonder why LameXP doesn't always create one instance for each CPU core. In theory, the more instances<br>
+we create, the more CPU cores can be utilized. In reality, however, there are more "shared" resources on the<br>
+computer. And, the more instances we run in parallel, the more processes will be competing for the shared<br>
+resources! More specifically, the amount of main memory (RAM) is limited. Creating a huge number of instances<br>
+in parallel can easily use up all RAM, which will cause the operating system to make heavy use of the page<br>
+file. This can result in HDD thrasing and may significantly hurt the overall performance! But even when there<br>
+is enough RAM available on the system, each encoder or decoder instance needs to access the HDD, e.g. for<br>
+reading the input file and for writing the output file. Thus too many instances will cause an I/O bottleneck!<br>
+If, however, you think that LameXP's choice of the number of parallel instances is too conservative, you may<br>
+overwrite the number of parallel instances on the "Advanced Options" tab. The upper limit is 16.<br>
+<br>
+Finally, note that LameXP only controls the number of instances that will run in parallel, but it does NOT<br>
 control how many threads an individual instance will create! Some encoders use "built-in" multi-threading and<br>
 thus a single encoder instance may create several threads - LameXP has no control over that.<br><br>
 
index 51a1bd5..8a9b784 100644 (file)
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="147"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="152"/>
         <source>Show details for selected job</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="148"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="153"/>
         <source>Browse Output File Location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="166"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="171"/>
         <source>Encoding Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="166"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="171"/>
         <source>Your files are being encoded, please be patient...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="327"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="332"/>
         <source>Encoding files, please wait...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="370"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="375"/>
         <source>Multi-threading enabled: Running %1 instances in parallel!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="384"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="389"/>
         <source>Aborted! Waiting for running jobs to terminate...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="399"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="404"/>
         <source>Encoding: %1 files of %2 completed so far, please wait...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="427"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="432"/>
         <source>Creating the playlist file, please wait...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="437"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="442"/>
         <source>Process was aborted by the user after %1 file(s)!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="437"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="442"/>
         <source>Process was aborted prematurely by the user!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="438"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="443"/>
         <source>LameXP - Aborted</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="438"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="443"/>
         <source>Process was aborted by the user.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="450"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="455"/>
         <source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="451"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="456"/>
         <source>LameXP - Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="451"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="456"/>
         <source>At least one file has failed!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="461"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="462"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="466"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="467"/>
         <source>All files completed successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="462"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="467"/>
         <source>LameXP - Done</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="859"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="864"/>
         <source>Playlist creation failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="859"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="864"/>
         <source>The playlist file could not be created:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="929"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="934"/>
         <source>Warning: Computer will shutdown in %1 seconds...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="933"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="934"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="938"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="939"/>
         <source>Cancel Shutdown</source>
         <translation type="unfinished"></translation>
     </message>
index 11988d8..3253669 100644 (file)
         <translation type="unfinished">Powrót</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="147"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="152"/>
         <source>Show details for selected job</source>
         <translation type="unfinished">Pokaż szczegóły wybranego zadania</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="148"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="153"/>
         <source>Browse Output File Location</source>
         <translation type="unfinished">Wybierz lokalizację dla plików wyjściowych</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="166"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="171"/>
         <source>Encoding Files</source>
         <translation type="unfinished">Kompresowanie plików</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="166"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="171"/>
         <source>Your files are being encoded, please be patient...</source>
         <translation type="unfinished">Twoje pliki są właśnie kompresowane, prosze być cierpliwy...</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="327"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="332"/>
         <source>Encoding files, please wait...</source>
         <translation type="unfinished">Kompresowanie plików, prosze czekać...</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="370"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="375"/>
         <source>Multi-threading enabled: Running %1 instances in parallel!</source>
         <translation type="unfinished">Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań!</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="384"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="389"/>
         <source>Aborted! Waiting for running jobs to terminate...</source>
         <translation type="unfinished">Przerwano! Czekanie na wyłączenie procesu...</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="399"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="404"/>
         <source>Encoding: %1 files of %2 completed so far, please wait...</source>
         <translation type="unfinished">Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików...</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="427"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="432"/>
         <source>Creating the playlist file, please wait...</source>
         <translation type="unfinished">Tworzenie pliku playlisty, prosze czekać...</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="437"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="442"/>
         <source>Process was aborted by the user after %1 file(s)!</source>
         <translation type="unfinished">Proces został przerwany przez użytkownika po wykonaniu %1 plików!</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="437"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="442"/>
         <source>Process was aborted prematurely by the user!</source>
         <translation type="unfinished">Proces został przedwcześnie zakończony przez użytkownika!</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="438"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="443"/>
         <source>LameXP - Aborted</source>
         <translation type="unfinished">LameXP - Przerwano</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="438"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="443"/>
         <source>Process was aborted by the user.</source>
         <translation type="unfinished">Proces został przerwany przez użytkownika.</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="450"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="455"/>
         <source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
         <translation type="unfinished">Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły!</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="451"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="456"/>
         <source>LameXP - Error</source>
         <translation type="unfinished">LameXP - Błąd</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="451"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="456"/>
         <source>At least one file has failed!</source>
         <translation type="unfinished">Przynajmniej jeden plik nie został skompresowany!</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="461"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="462"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="466"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="467"/>
         <source>All files completed successfully.</source>
         <translation type="unfinished">Kompresja wszystkich plików zakończona powodzeniem.</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="462"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="467"/>
         <source>LameXP - Done</source>
         <translation type="unfinished">LameXP - Zrobione</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="859"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="864"/>
         <source>Playlist creation failed</source>
         <translation type="unfinished">Tworzenie playlisty zakończone niepowodzeniem</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="859"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="864"/>
         <source>The playlist file could not be created:</source>
         <translation type="unfinished">Playlista nie mogła zostać utworzona:</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="929"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="934"/>
         <source>Warning: Computer will shutdown in %1 seconds...</source>
         <translation type="unfinished">Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y...</translation>
     </message>
     <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="933"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="934"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="938"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="939"/>
         <source>Cancel Shutdown</source>
         <translation type="unfinished">Anuluj wyłączenie komputera</translation>
     </message>
index 112e85c..5147587 100644 (file)
@@ -29,8 +29,8 @@
 #define VER_LAMEXP_MINOR_HI                                    0
 #define VER_LAMEXP_MINOR_LO                                    4
 #define VER_LAMEXP_TYPE                                                Alpha
-#define VER_LAMEXP_PATCH                                       3
-#define VER_LAMEXP_BUILD                                       791
+#define VER_LAMEXP_PATCH                                       4
+#define VER_LAMEXP_BUILD                                       792
 
 ///////////////////////////////////////////////////////////////////////////////
 // Tool versions (minimum expected versions!)