Question : Issue de conception, stockant la date de /proc

Bonjour, le

This est plus pour obtenir à de la rétroaction de ma conception puis un problème réel pour résoudre. J'ai pensé que je lui donnerais un essai puisque vous des types avez été plus tôt tellement utile. le

Ok ici il est. J'essaye d'écrire le programme de C.A. ++ qui va prendre un instantané du système de fichiers de /proc. Jusqu'ici j'ai écrit un analyseur pour analyser chaque directive de PID. L'instantané sera alors une classe enfermant la structure de proc que j'essaye de concevoir.
du

[ProcInfo]  |-----1312--[
de Dir]  |                   |
  |                   |---smap--[
de dossier]  |                   |                   |--RSS--[
de données]  |                   |                   |--USS--[
de données]  |                   |                   |--PSS--[
de données]  |                   |---cmdline--[
de dossier]  |                   |                    |--cmd--[
de données]  |                   |---filet--[
de Dir]  |                                  |---sockstat6--[
de dossier]  |                                  |                         |--TCP6--[
de données]  |---meminfo--[
de dossier]                         |---memtotal--[La classe de =A du

[ProcInfo] de données] représentant le proc qui devrait hériter de la classe virtuelle de =A du class
[Dir] d'instantané représentant un dir dans le proc qui devrait hériter de la classe virtuelle de =A du class
[dossier] d'instantané représentant un dossier dans le proc qui devrait hériter de la classe virtuelle de =A du class
[données] d'instantané représentant les données ces le
{vide virtuel d'instantané de l'analyseur returns.

class de
apposent (Snapshot*) = 0 ;
} ;

class Dir : Snapshot
{
de
de
……….
privé :
DST : map ;
} ; dossier du

class : Snapshot
{
de
de
……….
privé :
DST : map ;
} ;


class ProcInfo : Dir
{
de
…….
} ; le

I voudrait alors employer ceci dans un fil courent toute les sec 10 et prendre un instantané de proc du

ProcHandler de /ptoc ; *procInfo du
ProcInfo = proc.snapshot () ; pidSnapshot du

Dir = procInfo->getPid (1312) ; données du
Data = pidSnapshot.get (ProcInfo : : RSS) ; rss du
int = data.toInt () ; sRss du
string = data.toString () ; memSnapshot du

File = procInfo->getSystem (ProcInfo : : MEM) ; données du
Data = memSnapshot.get (ProcInfo : : MEMTOTAL) ; mem du
int du = data.toInt () ; sMem du
string = data.toString () ;

delete procInfo;les commentaires du

Any sur cette conception seraient même petits beaucoup apprécié que je dois juste en obtenir rétroagis. J'avais regardé fixement cette conception à longtemps et je pense que j'ai fermé à clef mon individu dedans à ceci la conception. J'ai besoin de quelques nouveaux yeux pour jeter un coup d'oeil à lui et peut-être ils peuvent voir quelques problèmes ou peut-être un design.


class= de

Réponse : Issue de conception, stockant la date de /proc


Semble correct à moi, mais puisque vous avez demandé de nouvelles idées, va ici --

- Car une question de de préférence/goût je beaucoup plutôt garderait les non éléments de circuit de conversions comme, ainsi je ne dois pas polluer l'interface et ne laisse aucune nouvelle conversion être ajoutée au système facilement. Mais comme j'ai dit, c'est une question de goût peut-être.

Converti (données d) ;
Converti (d) ;

- Depuis vous a parlé des voyages et de la largeur de bande de minimisation de serveur et a coïncidemment employé l'expression de « instantané », il est normal de penser également « à des instantanés différentiels ». Ainsi l'idée est que vous prenez un instantané primaire.

pidSnapshot de Dir = procInfo->getPid (1312) ;
Différence = pidSnapshot->difference de SnapShot* () ;

Instantané : : différence () ;
Instantané : : applyDifferential (Snapshot* d)

De sorte que manière, seulement valeurs qui ont le changement puisque la dernière capture sera retournée et qui peuvent causer l'épargne énorme en termes d'exécution.

- Êtes-vous sûr le système de fichiers de proc n'a-t-vous pas des liens symboliques est-ce que (je veux dire la même entité apparaissant sous les ruches multiples) ? Si oui, est alors elle correcte pour garder deux copies des mêmes informations. Je devine qu'elle n'importe pas beaucoup, tant que un objet de la valeur de l'instantané juste.

- Plutôt qu'ayant le genre du getPid () etc. d'accédants très spécifiques, il serait plus valable si vous pourriez avoir dans la classe basse qu'un ensemble générique de méthodes de trouvaille () comme indiquent

instantané virtuel de Snapshot* : : trouvaille (enfant de corde) {
}

Également que diriez-vous de la base d'instantané qui a des enfants

classe SnapshotContainer : instantané public
{
instantané virtuel de Snapshot* : : trouvaille (enfant de corde) {
}
privé :
  DST : *mpData de carte ;
} ;

- Être utile, si vous fournissez également une légère mais importante variation pour la trouvaille (), l'appellent localisent () le ce prend un chemin (plutôt qu'un nom) et réalise le travail sale de faire la traversée.

le chemin de // est sous cette forme, /root/net/sockstats/tcpip6
Instantané de Snapshot* : : placer (chemin de corde) {
}

- La modification la plus importante que j'apporterais serait de faire à l'instantané un objet compté par référence et retourné un futé/refptr à l'instantané plutôt que les indicateurs crus. Cela donnent vraiment beaucoup de puissance, particulièrement quand vous voulez pouvoir chercher des enfants et les garder autour de (peut-être)

instantané de classe : RefCounted public // voient Poco : : RefCounted pour le réf.
{
}

typedef RefCountedPtr RefSnapshot ;

Espérer ces l'aide…
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us