Closed marcboulle closed 1 week ago
A tester dans les trois cas d'installation:
A tester: en mode batch et GUI
A tester: Khiops et Khiops coclustering (sans MPI)
Je contacte la DSI pour la partie eburo
Test d'installation Windows, avec la dernière version de l'installeur (khiops-10.2.2-setup.exe) disponible sur le site On désinstalle préalablement l'outil existant.
Tests depuis un shell dos, répétés plusieurs fois pour estimer la variation du temps:
Puis test additionnel avec un scénario d'apprentissage.
Résultats identiques quel que soit le répertoire d'installation
Pas d'impact du toolkit java, testé avec
C:\Program Files
C:\Program Files
Attention: en mode admin, on se retrouve initialement dans le répertoire C:\Windows\Systeme32
, et non dans le répertoire attendu C:\users\public\khiops_data
, ce qui rend l'accès aux exemple très pénible
Scenario d'apprentissage sur la base adult, sans les arbres Utilisation du scenario en mode batch: -i ... -e ... -b
ClassManagement.OpenFile // Open...
ClassFileName C:\Users\Public\khiops_data\samples\Adult\Adult.kdic // Dictionary file
OK // Open
TrainDatabase.DatabaseFiles.List.Key Adult // List item selection
TrainDatabase.DatabaseFiles.DataTableName C:\Users\Public\khiops_data\samples\Adult\Adult.txt // Data table file
AnalysisSpec.TargetAttributeName class // Target variable
AnalysisResults.ResultFilesDirectory Test // Result files directory
AnalysisSpec.PredictorsSpec.ConstructionSpec.MaxTreeNumber 0 // Max number of trees
ComputeStats // Train model
Exit // Close
OK // Yes
Résultats: overhead sur le temps global d'exécution, de plus de 5 s en mode user, vs le mode admin
Paramétrage préalable par set KHIOPS_PROC_NUMBER=1,... Temps recueillis dans le log: cumul du Data preparation time et du SNB train time
Résultats de références sur la même machine, dans mon environnement de développement:
Résultats obtenus depuis un shell en mode admin, depuis C:\Applications\khiops\bin, avec la commande khiops.cmd -i scenarioTrain._kh -e log.txt
Impact répertoire d'installation: aucun Impact MPI: significatif, de 2 à 5 s, même en mode admin Impact mode admin vs user: énorme, on passe d'utilisable à non utilisable
Performances très dégradées avec le nombre de coeurs
Explication trouvée en comparant khiops_env et kht_test
Solution: dans khiops_env, lancer mpi avec la commande
set KHIOPS_MPI_COMMAND="%MSMPI_BIN%mpiexec" -n %KHIOPS_PROC_NUMBER%
au lieu de
set KHIOPS_MPI_COMMAND="%MSMPI_BIN%mpiexec" -al spr:P -n %KHIOPS_PROC_NUMBER% /priority 1
On retrouve les performances attendues
La correction sera prise en compte avec la pull request en cours https://github.com/KhiopsML/khiops/pull/343
Problèmes potentiels à investiguer
L'hypothèse de l'antivirus ayant été écartée, le code a été instrumenté pour identifier à quel moment on perd une vingtaine de secondes lors de l'ouverture de l'application GUI en mode utilisateur.
Le résultat est que tout le temps passé provient d'une unique unique instruction java dans GUIFileDirectoryChooser:
private static JFileChooser globalFileChooser = new JFileChooser();
Il s'agit de la première instanciation d'un FileChooser dans la GUI, qui prend un temps très long. Ce problème est apparemment connu: https://stackoverflow.com/questions/49792375/jfilechooser-is-very-slow-when-using-windows-look-and-feel https://forums.oracle.com/ords/apexds/post/jfilechooser-incredibly-slow-both-to-initialize-and-to-chan-0912 https://bugs.openjdk.org/browse/JDK-6372808
En fait, le FileChooser avec le loook and feel Windows commence par scanner l'ensemble de tous les drives de la machine pour dimensionner la fenêtre du FileChooser. En cas de drives réseaux dont l'accès peut être très lent, cela peut entrainer un temps d'attente considérable. Et effectivement, sur mon poste développeur, plusieurs drives réseaux sont utilisés (montés en mode administrateur), ce qui n'est pas le cas sur la plupart des postes bureautiques.
Solution 1: préchargement d'un FileChooser
Solution 2: passer à un look and feel "metal" (cf. Illustration ci-dessous)
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
à
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
Solution 3: passer à un look and feel "metal" uniquement pour le FileChooser sous Windows
Solution 4: garder l'ergonomie Windows, aevc un FileChooser bridé n'ayant pas préalablement scanné les drives réseaux
private static JFileChooser globalFileChooser = new JFileChooser();
à
private static JFileChooser globalFileChooser = new JFileChooser() {
public void updateUI() {
putClientProperty("FileChooser.useShellFolder", Boolean.FALSE);
super.updateUI();
}
};
Look and Feel Metal
Look and Feel Windows
Look and Feel Windows, sans le scan des drives réseaux
Pour ma part, je trouve la Solution 2 (passer à un look and feel "metal") satisfaisante.
On part sur la solution 2, meilleurs compromis entre ergonomie et rapidité dans les cas d'usage. Et même look and feel sur toutes les plateformes.
Description
When you click on the Khiops icon, Khiops launches very slowly on Windows, e-buro. It takes between 10 and 20 seconds (some times almost one minute) before seeing the application window.
Questions/Ideas
Context
khiops -s
): Windows, e-buro