Question

Sur une boîte multicoeur, les décisions d'horairistes de fil java sont plutôt arbitraire, il attribue des priorités de fil en fonction lorsque le fil a été créé, à partir de laquelle il a été créé fil, etc.

L'idée est de lancer un processus de réglage à l'aide PSO qui priorités de fil mis au hasard et puis finalement atteindre les priorités optimales où la fonction de remise en forme est la durée totale du programme?

Bien sûr, il y aurait plus de paramètres, comme les priorités se déplacerait pendant la course pour trouver une fonction de priorité optimale.

Comment pratique, intéressant fait son idée? et des suggestions. Juste un peu de fond, ive programmation été en java / c / c ++ pour quelques années avec divers projets, une autre alternative commettrions une planificateur de threads en fonction de cela dans c, où le planificateur de threads par défaut est le système d'exploitation.

Était-ce utile?

La solution

La meilleure façon de savoir -. Démarrer un projet open source et voir l'utilisation / la réaction des gens

Il semble très intéressant pour moi - mais je personnellement ne le trouve pas très utile. Peut-être que nous sommes tout simplement pas au point où la programmation concurrente est aussi répandue et facile que cela pourrait être.

Avec la promotion de la programmation fonctionnelle, je suppose que le monde se déplacerait vers éviter la synchronisation des threads autant que possible (ce qui rend l'ordonnancement des threads moins d'impact sur la performance globale)

De mon expérience personnelle subjective, la plupart des problèmes de performance dans le logiciel peut être résolu en améliorant une seule zone de goulot d'étranglement qui représente 90% du ralentissement. Cet optimiseur peut aider à trouver cela. Je ne sais pas à quel point la stratégie de planification pourrait améliorer la performance globale, cependant.

Ne pas se décourager, bien! Je suis juste parler hors de l'air. Il semble amusant, alors pourquoi ne pas tout simplement jouer avec elle quand même:)

Autres conseils

Votre approche décrite est une approche statique, à savoir que vous devez exécuter le programme plusieurs fois, puis venir avec une solution de planification, puis expédier vos informations d'horaire avec le programme.

Le problème est que pour la plupart des programmes non triviales, leur performance dépendra en partie des données spécifiques avec lesquelles ils travaillent. Même si vous trouvez un moyen optimal de fils de calendrier pour un ensemble de données, il n'y a absolument aucune garantie que cela améliorera la vitesse sur l'autre. Dans la plupart des cas, l'exécution ce sera une optimisation à long et ardu à chaque fois qu'ils veulent faire une nouvelle version ne sera pas la peine pour les devs, à moins peut-être pour les grands efforts de calcul (où les programmes sont susceptibles d'être réglés manuellement et non écrites en java de toute façon).

Je dirais un planificateur de fil auto-apprentissage est une bonne idée, mais vous ne pouvez pas le traiter comme un problème d'optimisation classique ici. Soit vous devez être sûr que votre commande de planification demeurera optimale (peu probable) ou trouver une méthode d'optimisation qui fonctionne à l'exécution. Et la question ici est peut-être que cela ne prendrait pas beaucoup pour les frais généraux de votre planificateur pour détruire tout gain de performance que vous pourriez obtenir.

Je pense que cela est une question quelque peu subjective, mais dans l'ensemble non, ne pense pas que cela fonctionnerait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top