2009-11-12 4 views
2

Je suis chargé de construire une application dans laquelle les utilisateurs professionnels définiront un certain nombre de règles pour la manipulation de données & traitement (par exemple prendre une valeur numérique et fractionnement il figure également parmi un certain nombre d'enregistrements sélectionnés sur la base de la condition spécifiée dans la règle).Détermination des exigences système (matériel, processeur et mémoire) pour une application logicielle par lots

Chaque mois, une application batch doit être exécutée afin de traiter environ un demi-million d'enregistrements selon les règles définies. Chaque enregistrement a environ 100 champs. L'environnement est .NET, C# et SQL Server avec un moteur de règles tiers

Pourriez-vous suggérer comment définir et/ou déterminer quel type de matériel sera le mieux adapté si l'exigence est de traiter des enregistrements dans un disons environ 8 à 10 heures. Comment les spécifications varieront-elles si l'utilisateur veut augmenter ou diminuer le délai en fonction des coûts du matériel?

Merci à l'avance

Abby

+0

Notez que si vous utilisez un ensemble basé à la place de RBAR, vous aurez très probablement besoin de moins de ressources et d'une fenêtre de temps plus courte pour le faire. –

Répondre

1

Création de l'application et de profil il?

+0

J'ai besoin de faire savoir à l'équipe informatique quel type de matériel sera nécessaire pour qu'ils puissent se le procurer. Ainsi, la création de l'application et le profilage ne seront pas la solution –

+0

En fait, le profilage sur le matériel existant est le seul à deviner les futurs besoins matériels ... Vous ne pouvez pas le profiler sans l'avoir construit ... –

0

Si ce système est pas d'abord une sorte, vous pouvez envisager de suivre:

  • Réutiliser (après une évaluation supplémentaire) besoins matériels des projets précédents
  • Évaluer les exigences matérielles en fonction de la charge de travail et le matériel configuration de l'application existante

Si ce n'est pas le cas et que les exigences de performance sont très importantes, alors la meilleure solution serait de créer un prototype avec, disons, 10 règles implémentées. Traitez l'ensemble de données à l'aide du prototype et extrapolez-le à un jeu de règles complet. Sur la base de ces informations, vous devriez pouvoir calculer les performances initiales et les exigences matérielles. Vous pouvez ensuite affiner ces spécifications en tenant compte de la croissance planifiée du volume de données traitées, des exigences d'évolutivité et de la redondance.

+0

Juste un nitpick ici ... 10 règles extrapolent rarement bien pour un demi système de règles d'un million projeté ... 10 000 minimum est ce que je voudrais aller. Automatisez la génération des règles et paramétrez-la afin qu'elles puissent mesurer et quantifier ce qui se passe si elles ont grossièrement sous-estimé le système. –

+0

Comme je l'ai compris un demi-million dans la question se réfère au nombre d'enregistrements traités par les règles, pas le nombre de règles elles-mêmes. Quoi qu'il en soit, un bon point de base pour l'extrapolation devrait être solide et pertinent pour la tâche à accomplir. –

1

Étape 0. Créez l'application. Il est impossible de dire la performance réelle d'un système multi-ordinateur comme vous le décrivez à partir de spécifications "papier" ... Vous devez l'essayer et voir ce qui détient les plus grands ralentissements ... Ceci est traditionnellement physique IO, mais pas toujours ...

Étape 1. Profil avec exemples de jeux de données dans un environnement isolé. Ceci est une métrique brute. Vous n'essayez pas d'isoler ce qui prend le temps, juste de mesurer le temps nécessaire pour exécuter les règles.

Que signifie environnement isolé? Vous souhaitez utiliser les mêmes types de matériel réseau entre les machines, mais n'autorisez aucun autre trafic sur ce segment de réseau. Cela introduit trop de variables à ce stade.

Que signifie le profil? Avec le matériel actuel, mesurez le temps nécessaire pour terminer dans les circonstances suivantes. Ecrivez un programme pour automatiser la génération de données.

Scénario 1. 1 000 des règles les plus simples possibles.

Scénario 2.1 000 des règles les plus complexes auxquelles vous pouvez raisonnablement vous attendre à ce que les utilisateurs entrent.

Scénarios 3 & 4. 10 000 Le plus simple et le plus complexe.

Scénarios 5 & 6. 25 000 et les plus complexes Simplest

Scénarios 7 & 8. 50 000 et les plus complexes Simplest

Scénarios 9 & 10. 100 000 et les plus complexes Simplest

Étape 2. Anaylze les données.

Voir s'il y a des tendances dans le temps d'achèvement. Déterminez s'ils apparaissent liés strictement au volume des règles ou si la complexité prend également en compte ... Je suppose que cela sera le cas. Développer une ligne de tendance qui montre combien de temps vous pouvez vous attendre à prendre s'il y a 200 000 et 500 000 règles. Effectuez un autre passage à 200 000. Voyez si la ligne de tendance est correcte, sinon, révisez votre méthode de développement de la ligne de tendance. Étape 3. Mesurez l'activité de la base de données et du réseau lorsque le système traite les 20 000 ensembles de règles. Voir s'il y a plus d'activité qui se passe avec plus de règles. Si c'est le cas, plus vous accélérerez le débit vers et depuis le serveur SQL, plus il sera rapide.

Si ceux-ci sont « relativement faible », alors la vitesse CPU et RAM sont probablement où vous voulez muscler la spécification des machines demandé ...

Bien sûr, si tous ces tests va coûter votre employeur plus que d'acheter le matériel serveur le plus robuste possible, il suffit de quantifier le coût du temps passé à tester par rapport au coût d'achat du meilleur serveur et d'en avoir fini et de peaufiner votre application et le SQL que vous contrôlez ...

+0

Selon mon expérience, il est possible de trouver une approximation plus ou moins utile pour les besoins matériels avant même que le système ne soit construit. Dans les situations du monde réel, vous devez estimer la puissance de cheval nécessaire pour exécuter l'application - il est peu logique de créer une application uniquement pour découvrir que nous ne pouvons pas nous permettre de l'exécuter. Essayer différents scénarios et rassembler des statistiques est en effet une manière d'aller ici. –

Questions connexes