Microsoft
Software
Hardware
Network
Frage : Die Entwurfsausgabe, speichernd r5uhren von /proc her
Hallo, ist
This mehr, zum etwas Rückgespräch meines Entwurfs dann eines tatsächlichen Probleme zu erhalten, um zu lösen. Ich dachte, dass ich ihm einen Versuch geben würde, da Sie Kerle so nützliches früheres gewesen sind.
Ok hier ist er. Ich versuche, Programm Wechselstrom-++ zu schreiben, das einen Schnappschuß des /proc-Dateisystems nehmen wird. Bis jetzt habe ich eine grammatische Definition geschrieben, um jede pid-Richtlinie zu analysieren. Der Schnappschuß ist dann eine Kategorie, welche die proc Struktur einschließt, die ich versuche, zu entwerfen.
[ProcInfo]
|-----1312--[Dir]
| |
| |---smap--[Akte]
| | |--RSS--[Daten]
| | |--USS--[Daten]
| | |--PSS--[Daten]
| |---cmdline--[Akte]
| | |--cmd--[Daten]
| |---Netz--[Dir]
| |---sockstat6--[Akte]
| | |--TCP6--[Daten]
|---meminfo--[Akte]
|---memtotal--[Die Daten]
[ProcInfo] =A Kategorie, die proc darstellt, das die virtuelle Schnappschuß class
[Dir] =A Kategorie übernehmen sollte, die ein dir im proc darstellt, das die virtuelle Schnappschuß class
[Akte] =A Kategorie übernehmen sollte, die eine Akte im proc darstellt, das die virtuelle Schnappschuß class
[Daten] =A Kategorie übernehmen sollte, die diese Daten darstellend das grammatische Definition returns.
class Schnappschuß
{
virtuelle Lücke, fügen (Snapshot*) = 0 hinzu;
};
class Dir : allgemeines Snapshot
{
…
…
….
privat:
Geschlechtskrankheit: map
*mpData;
};
class Akte: allgemeines Snapshot
{
…
…
….
privat:
Geschlechtskrankheit: map
*mpData;
};
class ProcInfo : allgemeines Dir
{
…
….
};
I möchte dann dieses in einem Gewinde verwenden laufen lassen alle sek 10 und das Nehmen eines Schnappschusses von /ptoc
ProcHandler proc;
ProcInfo *procInfo = proc.snapshot ();
Dir pidSnapshot = procInfo->getPid (1312);
Data Daten = pidSnapshot.get (ProcInfo::
RSS);
int rss = data.toInt ();
string sRss = data.toString ();
File memSnapshot = procInfo->getSystem (ProcIn
fo:: MEM);
Data Daten = memSnapshot.get (ProcInfo::
MEMTOTAL);
int mem = data.toInt ();
string sMem = data.toString ();
delete procInfo;
Any Anmerkungen zu diesem Entwurf würden viel geschätzte sogar kleine sein, die ich gerade einiges erhalten muss rückwirke. Ich habe entlang dieses Entwurfs zu lang angestarrt und ich denke, dass ich mein Selbst innen zu diesem der Entwurf verriegelt habe. Ich benötige einige neue Augen, einen Blick an ihm zu nehmen und möglicherweise können sie einige Probleme oder möglicherweise ein viel besseres design.
sehen
Antwort : Die Entwurfsausgabe, speichernd r5uhren von /proc her
Scheint zu mir, aber okay, da Sie um neue Ideen baten, geht hier --
- Da eine Angelegenheit von vorzugsweise/Geschmack ich viel eher die Umwandlungsnichtmitglieder halten würde, wie, also ich die Schnittstelle beschmutzen muss und keine neue Umwandlung dem System leicht hinzugefügt werden lasse. Aber, wie ich sagte, ist die eine Angelegenheit des Geschmacks möglicherweise.
Bekehrter
(Daten d);
Bekehrter
(d);
- Seit Ihnen sprach über herabsetzenbedienerreisen und -bandbreite und verwendete zusammentreffend die „Schnappschuß“ Phrase, es ist natürlich, an „differenziale Schnappschüsse“ auch zu denken. So ist die Idee, dass Sie einen Primärschnappschuß nehmen.
Dir pidSnapshot = procInfo->getPid (1312);
SnapShot* Unterschied = pidSnapshot->difference ();
Schnappschuß:: Unterschied ();
Schnappschuß:: applyDifferential
(Snapshot*
d)
Damit Weise, nur Werte, die Änderung haben, da letzte Sicherung zurückgebracht wird und die sehr große Sparungen in Leistung ausgedrückt verursachen können.
- Sind Sie das proc Dateisystem haben nicht symbolische Verbindungen sicher (mich bedeute das gleiche Wesen, das unter mehrfachen Bienenstöcken erscheint)? Wenn ja, ist dann es okay, zwei Kopien des gleichen Datums zu halten. Ich schätze, dass es nicht viel, solange ein Wertgegenstand des Schnappschusses gerade ausmacht.
- Eher als, die getPid () usw. Art der sehr spezifischen Accessors, würde es habend lohnender sein, wenn Sie in der niedrigen Kategorie haben konnten, die ein generischer Satz Methoden der Entdeckung () wie sagen
virtueller Snapshot* Schnappschuß:: Entdeckung (Schnurkind) {
}
Auch wie über Schnappschußunterseite, die Kinder hat
Kategorie SnapshotContainer: allgemeiner Schnappschuß
{
virtueller Snapshot* Schnappschuß:: Entdeckung (Schnurkind) {
}
privat:
Geschlechtskrankheit: Diagramm
*mpData;
};
- Nützlich sein, wenn Sie auch eine geringfügige aber wichtige Veränderung für Entdeckung () zur Verfügung stellen, benennen sie lokalisieren () dieses nimmt einen Weg (eher als ein Name) und erledigt die schmutzige Arbeit des Handelns der Überquerung.
//-Weg ist in dieser Form, /root/net/sockstats/tcpip6
Snapshot* Schnappschuß:: finden (Schnurweg) {
}
- Die wichtigste Änderung, die ich vornehmen würde, würde, den Schnappschuß einen Hinweis gezählten Gegenstand zu bilden und zurückgegangen ein intelligentes/einem refptr zum Schnappschuß eher als rohe Zeiger sein. Das geben wirklich viel Energie, besonders wenn Sie sein möchten, Kinder zu holen und sie um zu halten (möglicherweise)
Kategorie Schnappschuß: allgemeines RefCounted // sehen Poco:: RefCounted für Verweis.
{
}
typedef RefCountedPtr
RefSnapshot;
Dieses Hilfe hoffen…
Weitere Lösungen
Wort-Presse, die Frage bewirtet
asp.net: Mein Problem ist, benutze ich einen ajax Ergänzung Kalender, um BeginDate u. EndDate Werte einzutragen
Silverlight 4 UI Ereignisse
wie kann ich irgendeine Bildentschließung online ändern und sie zum lokalen PC dann innen sparen??
ZFS Sicherungshilfe Ubuntu 10.0.4 LTS
Form-Frage für Kristallreports
Betreffend INOTES in Lotos 8.5
Mühen, die ZWISCHEN Logik erhalten zu arbeiten
Spannungs-Sensor ermittelte einen Ausfall auf Bediener DELL-PowerEdge 2650
broadcom NIC teaming