Dell Precision Optimizer Administratorhandbuch August 2020 Rev.
Hinweise, Vorsichtshinweise und Warnungen ANMERKUNG: Eine ANMERKUNG macht auf wichtige Informationen aufmerksam, mit denen Sie Ihr Produkt besser einsetzen können. VORSICHT: Ein VORSICHTSHINWEIS warnt vor möglichen Beschädigungen der Hardware oder vor Datenverlust und zeigt, wie diese vermieden werden können. WARNUNG: Mit WARNUNG wird auf eine potenziell gefährliche Situation hingewiesen, die zu Sachschäden, Verletzungen oder zum Tod führen kann. © 2018 bis 2020 Dell Inc. oder ihre Tochtergesellschaften.
Inhaltsverzeichnis Kapitel 1: Einführung....................................................................................................................... 4 Kapitel 2: Dell Precision Optimizer-Komponenten.............................................................................. 5 Deinstallieren des Dell Precision Optimizer.........................................................................................................................5 Kapitel 3: Performance..................................
1 Einführung Dieses Dokument beschreibt die Tools, Tipps und Empfehlungen, die für IT-Administratoren zur Verwaltung von Dell Precision Optimizer im Remote-Zugriff verfügbar sind.
2 Dell Precision Optimizer-Komponenten Die vier Hauptkomponenten von Dell Precision Optimizer sind: • • • • Performance Nachverfolgungs- und Analyse-Engine (Track and Analyze Engine – TA) Systemwartung (System Maintenance – SM) Dell Precision Optimizer Manager CLI (dpoCmd.exe) Jede der Komponenten wird als Windows-Dienst implementiert, der auch als COM-Server fungiert.
Über eine Eingabeaufforderung (als Administrator ausführen) startet Ausführen des oben aufgeführten Befehls den Deinstallationsvorgang der Dell Precision Optimizer Anwendung. Der folgende Befehl kann angepasst werden, sodass die Deinstallation automatisch ausgeführt wird. Dazu muss Folgendes eingegeben werden: -s –f1 Wenn sich die Datei (.iss Datei) im c:\temp Ordner befindet und der Name uninst.iss ist, wird der folgende Befehl automatisch ausgeführt. "C:\Program Files (x86)\InstallShield
3 Performance Das Performance-Subsystem besteht aus den folgenden Modulen: • • Policy Processing Engine (PPE) Profilupdatetool (profUpd.exe) Themen: • • Richtlinienverarbeitungs-Engine (Policy Processing Engine) Profilaktualisierungstool Richtlinienverarbeitungs-Engine (Policy Processing Engine) Die Policy Processing Engine, PPE, wird als Windows-Service implementiert und ausgeführt, sobald das Gerät hochgefahren wird – unabhängig davon, ob der Anwender angemeldet ist oder nicht.
4 Nachverfolgen und Analysieren Mit dem Analyse-Subsystem lassen sich die folgenden Berichtarten erstellen: • • • • • • Systemanalyse-Berichte Workloadanalyse-Berichte CPU-Informations-Berichte GPU-Informations-Berichte Systemdiagnosebericht Leistungsbenachrichtigungen System-Analyse-Berichte bieten Datenerfassung durch Dell Data Vault (DDV) Anwendung in einem XML-Format. Die Workload-Analyse-Funktion ermöglicht es dem Benutzer, seine Arbeitsauslastung zu analysieren.
Bericht generieren Tabelle 4. Bericht generieren Attributdetail Beschreibung Geben Sie Folgendes ein: Wählen Sie eine der folgenden Optionen: • • • • • Nach 24 Stunden (täglich) Nach 12 Stunden Nach 8 Stunden Nach 6 Stunden Nach 4 Stunden Standard: Täglich Beschreibung: Nach der Aktivierung der Option erfasst DDV Rohdaten und erstellt regelmäßig Berichte. Diese Einstellung legt fest, wie oft Rohdaten von DDV verarbeitet und in einen neuen Bericht umgewandelt werden.
• • • • • • • Größe L1-Cache (KB) Größe L2-Cache (KB) Größe L3-Cache (KB) CPU-Auslastung pro logischem Prozessor CPU Active Relative Frequency pro logischem Prozessor (zur Bestimmung der Turbo Residency) Prozessor-Warteschlangen-Länge für das System Anzahl der System-Threads GPU-Informations-Berichte Nur für unterstützte Nvidia- und AMD-GPU-Adapter ermöglicht der Dell Precision Optimizer 5.0 und höher dem Benutzer das Anzeigen erweiterter GPU.
• • Speicherüberlastung Übermäßige Festplatten-Lese- oder Schreibvorgänge Nachverfolgen und Analysieren 11
5 Systemwartung Dell Precision Optimizer Die Systemwartung oder SM ermöglicht es Ihnen, basierend auf den folgenden, von Dell Command | Update abgeleiteten Kriterien auszuwählen, welche Updates angezeigt bzw.
6 Benutzer-Feedback Die Dell Precision Optimizer-Benutzeroberfläche bietet eine Option, dass der Nutzer Feedback an Dell senden kann. Die Dell Precision Optimizer-Benutzeroberfläche stellt einen Link/Button zur Verfügung, über den der Anwender mit einem Klick sein Feedback abgeben kann. Die Benutzeroberfläche ruft eine URL mit einem Dell Standardformular im Browser auf, über das der Anwender Feedback zum Dell Precision Optimizer abgeben kann.
7 Verbessern des Dell Precision Optimizers Das Programm zur Verbesserung der Benutzerfreundlichkeit des Dell Precision Optimizers ermöglicht Dell Kunden, auf die Entwicklung künftiger Dell Precision Optimizer-Versionen einzuwirken. Durch Weitergabe von Informationen über die Verwendung von Dell Precision Optimizer an Dell können Sie zur Verbesserung der zukünftigen Versionen des Produkts beitragen.
8 Enterprise-Tools Themen: • • • • • WMI-Provider DPOCMD.EXE Setup-Befehlszeilenschalter Verwenden von SCCM und WSI KACE WMI-Provider Dell Precision Optimizer 5.0 und höher enthält einen WMI-Anbieter (Windows Management Instrumentation) für den Zugriff auf die folgenden Informationen. MOF-Beschreibungen finden Sie in Anhang A. Die folgenden zwei Dateien sind Teil des Dell Precision OptimizerPakets: • • Dell Precision Optimizer WMI Provider: dpoProv.
Tabelle 6.
• • • • • • • • • SYSUPD DDVCTRL USRFB UPGOPT WKLANL GFXPLUGINS IMPROVEDPO ISVCERTGFX SMARTALERT dpoCmd.exe -disableFeatures [ ...], wobei eines der folgenden Elemente sein kann: • • • • • • • • • • • PROFCTRL PROFUPD SYSUPD DDVCTRL USRFB UPGOPT WKLANL GFXPLUGINS IMPROVEDPO ISVCERTGFX SMARTALERT dpoCmd.exe -updateNow -criticality:CRO -filter:BDAF -device:ACMSNV dpoCmd.
Darüber hinaus ermöglicht eine neue Option GUI=0 dem IT-Administrator die Installation des Dell Precision Optimizer-Client ohne jegliche Benutzeroberflächen-Komponente im Headless-Modus. Der Benutzer kann die Software nicht steuern. IT-Administratoren können zudem das neue CLI-Tool nutzen, um andere Laufzeitfunktionen zu aktivieren oder deaktivieren.
2. Wählen Sie die Gerätesammlung, auf der Sie Dell Optimizer installieren möchten. 3. Vergewissern Sie sich, dass Inhalte automatisch an abhängige Elemente weitergeben aktiviert ist und klicken Sie auf Weiter. 4. Klicken Sie in der Registerkarte Inhalte auf Hinzufügen, um den Distributionspunkt auszuwählen. 5. Nehmen Sie in der Registerkarte Bereitstellungseinstellungen die folgenden Einstellungen vor: • • Aktion: Installieren Zweck: Erforderlich 6.
Das Softwarepaket „Aktivieren Sie ein Dell Precision OptimizerProfil“ bereitstellen 1. In der Konfigurationsmanager-Konsole: a. Öffnen Sie die Seite Softwarebibliothek. b. Klicken Sie auf die Registerkarte Übersicht. c. Öffnen Sie die Registerkarte Anwendungsmanagement. d. Klicken Sie auf Pakete. 2. Klicken Sie mit der rechten Maustaste auf das Softwarepaket DPO-Profil aktivieren und wählen Sie Implementieren. 3. Im Assistenten Software bereitstellen: a.
So importieren Sie eine .RDL-Datei 1. Öffnen Sie die SQL-Server-Datentools. 2. Klicken Sie im „Solution Explorer“ mit der rechten Maustaste auf das Verzeichnis, in dem Sie die .RDL-Datei hinzufügen möchten. a. Wählen Sie Vorhandenes Element hinzufügen. b. Wählen Sie die .RDL-Datei aus. 3. Öffnen Sie nach Abschluss des Imports die Datei und wählen Sie die Registerkarte Design. So stellen Sie sicher, dass die .RDL-Datei die richtige Datenquelle verwendet 1.
Festplatteninformation für ein einzelnes System Dieser Bericht zeigt Festplatteninformationen für ein einzelnes System über mehrere Berichte an. Tabelle 9.
KACE Dies ist heutzutage eine der Methoden der IT-Administratoren zur zentralen Verwaltung ihrer Systeme und Software-Anwendungen. In diesem Abschnitt werden Beispiele genannt, wie IT-Administratoren die Dell Precision Optimizer-Anwendung mit KACE-Appliance verwalten. ANMERKUNG: Die folgenden Schritte wurden auf KACE-Appliance 6.4.120756 K1000 verifiziert. Wenn Sie eine andere Version von KACE haben, dann können die tatsächlichen Schritte geringfügig abweichen.
• • • • • • Windows Ausführen als -> Lokales System Benachrichtigen -> Keine Zeitplan -> Keine Abhängigkeiten -> Fügen Sie alle DPO Paket-Dateien als neue Abhängigkeiten hinzu Aufgaben -> Wählen Sie „Neuer Task“ Überprüfen -> Klicken Sie auf Hinzufügen, wählen Sie dann Ein Programm starten, geben Sie die folgenden Daten ein: • • • • • • ○ Verzeichnis -> $(KACE_DEPENDENCY_DIR) ○ Datei -> PoaInstaller.exe ○ Auf den Abschluss warten -> MARKIERT ○ Sichtbar -> NICHT MARKIERT ○ Parameter -> LOGFILE=c:\temp\dpo
• • • • • • • • • Bereitstellen -> Keine Betriebssysteme-> Deaktivieren Sie Wählen Sie bestimmte Betriebssysteme und wählen Sie „Microsoft Windows“ (Alternativ) Betriebssysteme -> Wählen Sie spezielle Windows Betriebssysteme für die Bereitstellung Windows Ausführen als -> Lokales System Benachrichtigen -> Keine Zeitplan -> Keine Abhängigkeiten -> Keine Aufgaben -> Wählen Sie „Neuer Task“ Überprüfen -> Klicken Sie auf Hinzufügen, wählen Sie dann Ein Programm starten, geben Sie die folgenden Daten ein: • •
• • Unterstützung von Betriebssystemen -> Wählen Sie OSes Regel für benutzerdefinierte Inventarisierung -> ShellCommandTextReturn(wmic /namespace:\\root\cimv2\DPO Path DPO_Profiles get /ALL) • Klicken Sie auf Speichern. 4. Klicken Sie auf zurück in die neue benutzerdefinierte Inventarisierung und gehen Sie auf den Datensatz, den Sie gerade erstellt haben. Notieren Sie sich die ID# am Ende der URL. Die URL mit der ID# ist in der unteren linken Ecke der Seite sichtbar.
A ANHANG A - dpoCmd.
B ANHANG B – WMI Klassendefinitionsdateien /************************************************************** * DPOProv.mof * Last Updated: 03/06/2015 * This file defines the classes exposed by "dpoProv". **************************************************************/ #pragma autorecover #pragma namespace("\\\\.\\root\\cimv2") instance of __Namespace { Name = "DPO" ; }; #pragma namespace("\\\\.\\root\\cimv2\\DPO") /************************************************************** * DPO_HardwareInfo * There is one
string Motherboard_ePPID; [Description("Current BIOS Version.")] string BIOS_Version; [Description("Type of the system eg. Laptop or Desktop")] string System_Type; [Description("Serial number of the CPU.")] string Processor_Serial_Number; [Description("Processor name.")] string Processor_Information; [Description("Processor speed.")] string Processor_Speed; [Description("Average of the percentage LCD brightness when the system was on AC.
real32 S4_mins; [Description("Number of times the system was in Hibernate state (S4) where the between 0 to 30 mins.")] sint16 S4_Event_Bin_0_30_mins; [Description("Number of times the system was in Hibernate state (S4) where the between 30 mins to 1 hr.")] sint16 S4_Event_Bin_30_60_mins; [Description("Number of times the system was in Hibernate state (S4) where the between 1 hr to 2 hrs.
[Description("Percentage of time the processor (all processors combined) was in C1 state.")] sint16 C1_State_Pct; [Description("Percentage of time the processor (all processors combined) was in C2 state.")] sint16 C2_State_Pct; [Description("Percentage of time the processor (all processors combined) was in C3 state.")] sint16 C3_State_Pct; [Description("Percentage of time the processor (all processors combined) was in C0 state.")] sint16 C0_State_Pct; [Description("Number of LID transitions.
[Description("Percentage of time the system had between 256 MB to 512 MB of physical memory available to processes running on the computer.")] real32 AvailMem_256_512MB_Pct; [Description("Percentage of time the system had between 512 MB to 768 MB of physical memory available to processes running on the computer.")] real32 AvailMem_512_768MB_Pct; [Description("Percentage of time the system had between 768 MB to 1024 MB of physical memory available to processes running on the computer.
**************************************************************/ [Description("Monitor information from the summary log file. This information is extracted from the EDID data" " in the registry"), Dynamic,Provider("DPOProv") ] class DPO_Monitor { [ Description("Unique ID from the summary file."), Key ]string HardwareInfoGUID; [ Description("Monitor index number, starting from 0."), Key ]sint16 Index; [Description("Type of monitor (Dell or Non-Dell).
Description("This class associates DPO_HardwareInfoToBiosInternalLogs" "instance(s) with an instance of DPO_HardwareInfo."), dynamic:ToInstance, PROVIDER("DPOProv"):ToInstance ] class DPO_HardwareInfoToBiosInternalLogs { [key] DPO_HardwareInfo REF Antecedent; [key] DPO_BiosInternalLogs REF Dependent; }; /************************************************************** * DPO_WWAN * This has the Wireless WAN adapter information from a summary * log.
string Name; [Description("Manufacturer's name.")] string Mfg_Name; [Description("Full charge capacity of the battery.")] sint32 FullChargeCapacity; [Description("Battery cycle count.")] sint16 Cycle_Count; [Description("Total time (in minutes) the battery was in discharge state.")] real32 Discharge_Time_mins; [Description("Number of times the discharge depth was between 0 to 5%.")] sint16 Discharge_Depth_0_5_Pct; [Description("Number of times the discharge depth was between 5 to 10%.
sint32 Discharge_mV_Min; [Description("Average power (in W) during battery discharge.")] real32 Discharge_Power_W_Avg; [Description("Standard deviation of power (in W) during battery discharge.")] real32 Discharge_Power_W_Std_Dev; [Description("Maximum power (in W) during battery discharge.")] sint32 Discharge_Power_W_Max; [Description("Minimum power (in W) during battery discharge.")] sint32 Discharge_Power_W_Min; [Description("Percentage of time the power during discharge was between 0 to 5W.
// NameChange real32 real32 Charge_Power_W_RSOC_LE_60_Avg; Charge_Pwr_RSOC_LE_60_Avg; [Description("Standard deviation of power (in W) during battery charge when RSOC was less than 60%.")] // NameChange real32 Charge_Power_W_RSOC_LE_60_Std_Dev; real32 Charge_Pwr_RSOC_LE_60_StDv; [Description("Maximum power (in W) during battery charge when RSOC was less than 60%.
{ [ Description("Unique ID from the summary file."), Key ]string HardwareInfoGUID; [ Description("Notebook fan index number starting from 0."), Key ]sint16 Index; [Description("Location where the fan is present in the system.")] string Location; [Description("Percentage of time fan rpm was non-zero.")] sint16 Fan_Duty_Cycle_Pct; [Description("Fan speed when the summary log was generated.")] sint32 RPM; [Description("Peak fan speed.")] sint32 Peak_Fan_RPM; [Description("Average fan speed.
[Description("Percentage of time the fan speed was more than 7000 RPMs.")] sint16 RPM_GT7000_Pct; }; /************************************************************** * DPO_HardwareInfoToNBFan * This class associates DPO_NBFan instance(s) with an * instance of DPO_NBFan.
[Description("Percentage of time the fan speed was between 3100 and 3500 RPMs.")] sint16 RPM_3100_3500_Pct; [Description("Percentage of time the fan speed was between 3500 and 4000 RPMs.")] sint16 RPM_3500_4000_Pct; [Description("Percentage of time the fan speed was between 4000 and 4500 RPMs.")] sint16 RPM_4000_4500_Pct; [Description("Percentage of time the fan speed was between 4500 and 5000 RPMs.")] sint16 RPM_4500_5000_Pct; [Description("Percentage of time the fan speed was between 5000 and 5500 RPMs.
[Description("Percentage of time the temperature read was between 0 to 30C.")] sint16 Temp_0_30C_Pct; [Description("Percentage of time the temperature read was between 30 to 40C.")] sint16 Temp_30_40C_Pct; [Description("Percentage of time the temperature read was between 40 to 50C.")] sint16 Temp_40_50C_Pct; [Description("Percentage of time the temperature read was between 50 to 60C.")] sint16 Temp_50_60C_Pct; [Description("Percentage of time the temperature read was between 60 to 70C.
/************************************************************** * DPO_HardwareInfoToLogical_Processor * This class associates DPO_Logical_Processor instance(s) with an * instance of DPO_HardwareInfo.
[Association : ToInstance, Description("This class associates DPO_Disk instance(s) with " " an instance of DPO_HardwareInfo"), dynamic:ToInstance, PROVIDER("DPOProv"):ToInstance ] class DPO_HardwareInfoToDisk { [key] DPO_HardwareInfo REF Antecedent; [key] DPO_Disk REF Dependent; }; /************************************************************** * DPO_Partition * This has the logical partition information from a summary log. * There may be multiple instances of this class for each summary * file.
class DPO_LanAdapter { [ Description("Unique ID from the summary file."), Key ] string HardwareInfoGUID; [ Description("LAN adapter index number starting from 0."), Key ] sint16 Index; [Description("LAN adapter name.")] string Name; [Description("LAN adapter's MAC address.")] string MAC; [Description("Percentage of time the adapter was busy when the system was on AC.")] sint16 ActivityAC_Pct; [Description("Percentage of time the adapter was busy when the systen was on battery.
[Description("Percentage of time the WLAN adapter was connected when the system was on AC.")] sint16 WlanConnectedAC_Pct; [Description("Percentage of time the adapter was not connected when the system was on AC.")] sint16 WlanDisconnectedAC_Pct; [Description("Percentage of time the radio was off when the system was on battery.")] sint16 WlanRadioOffDC_Pct; [Description("Percentage of time the WLAN adapter was connected when the system was on battery.
[Description("Maximum disk temperature read using SMART.")] sint16 Temp_Max; [Description("Percentage of time disk temperature read using SMART was between 0 to 30C.")] sint16 Temp_0_30_Pct; [Description("Percentage of time disk temperature read using SMART was between 30 to 40C.")] sint16 Temp_30_40_Pct; [Description("Percentage of time disk temperature read using SMART was between 40 to 50C.")] sint16 Temp_40_50_Pct; [Description("Percentage of time disk temperature read using SMART was between 50 to 60C.
[Description("Load unload cycle count (normalized value).")] uint8 Load_Unload_Cycle_Count_Normalized; [Description("Load unload cycle count (worst value).")] uint8 Load_Unload_Cycle_Count_Worst; [Description("Load unload cycle count (threshold value).")] uint8 Load_Unload_Cycle_Count_Threshold; [Description("Total power on hours.")] sint64 Power_On_Hours; [Description("Total power on hours (normalized value).")] uint8 Power_On_Hours_Normalized; [Description("Total power on hours (worst value).
uint8 Free_Fall_Count_Normalized; [Description("Free fall count (worst value).")] uint8 Free_Fall_Count_Worst; [Description("Free fall count (threshold value).")] uint8 Free_Fall_Count_Threshold; [Description("Power cycle count.")] sint64 Power_Cycle_Count; [Description("Power cycle count (normalized value).")] uint8 Power_Cycle_Count_Normalized; [Description("Power cycle count (worst value).")] uint8 Power_Cycle_Count_Worst; [Description("Power cycle count (threshold value).
[Description("User reserved block count (SSD Total) (worst value).")] uint8 User_Rsvd_Block_Count_Total_Worst; [Description("User reserved block count (SSD Total) (threshold value).")] uint8 User_Rsvd_Block_Count_Total_Threshold; [Description("Unused reserved block count.")] sint64 Unused_Rsvd_Block_Count; [Description("Unused reserved block count (normalized value).")] uint8 Unused_Rsvd_Block_Count_Normalized; [Description("Unused reserved block count (worst value).
[Association : ToInstance, Description("This class associates DPO_Smart instance(s) with" " an instance of DPO_HardwareInfo"), dynamic:ToInstance, PROVIDER("DPOProv"):ToInstance ] class DPO_HardwareInfoToSmart { [key] DPO_HardwareInfo REF Antecedent; [key] DPO_Smart REF Dependent; }; /************************************************************** * DPO_DIMM * This has the DIMM information from a summary log. There * may be multiple instances of this class for each summary file.
[Description("Logical drive information for all logical drives found on the system."), Dynamic,Provider("DPOProv") ] class DPO_Logical_Drive_Info_New { [ Description("Unique ID from the summary file."), Key ] string HardwareInfoGUID; [ Description("Logical drive index number starting from 0."), Key ] sint16 Index; [Description("Logical drive name, eg. C:.")] string Name; [Description("Total logical drive size in MBs.")] sint64 Size_MB; [Description("Total free space on the logical drive in MBs.
[Description("MiniDump File Name.
Description("This class associates DPO_FreeFall instance(s) with " "an instance of DPO_HardwareInfo"), dynamic:ToInstance, PROVIDER("DPOProv"):ToInstance ] class DPO_HardwareInfoToFreeFall { [key] DPO_HardwareInfo REF Antecedent; [key] DPO_FreeFall REF Dependent; }; /************************************************************** * DPO_Cable * This has the cable log information from a summary log. There * may be multiple instances of this class for each summary file.
}; /************************************************************** * DPO_CableToCableChangeHistory * This class associates DPO_CableChangeHistory instance(s) with an * instance of DPO_Cable.
[Association : ToInstance, Description("This class associates DPO_BTModule instance(s) " " with an instance of DPO_HardwareInfo"), dynamic:ToInstance, PROVIDER("DPOProv"):ToInstance ] class DPO_HardwareInfoToBTModule { [key] DPO_HardwareInfo REF Antecedent; [key] DPO_BTModule REF Dependent; }; /************************************************************** * DPO_IntelPerf * This has the Intel performance information from a summary log. There * may be multiple instances of this class for each summary file.
**************************************************************/ [Description("Graphics performance information and statistics."), Dynamic,Provider("DPOProv") ] class DPO_Graphics { [ Description("Unique ID from the summary file."), Key ] string HardwareInfoGUID; [ Description("GPU number starting from 0."), Key ] sint16 Index; [Description("Minumum GPU utilization.")] sint16 Min_GpuUtilization; [Description("Maximum GPU utilization.")] sint16 Max_GpuUtilization; [Description("Average GPU utilization.
[Description("Percentage of time graphics fan was at 0% speed.")] real32 FanSpeedPct_0_Pct; [Description("Minumum GPU temperature.")] sint16 Min_Temperature; [Description("Maximum GPU temperature.")] sint16 Max_Temperature; [Description("Average GPU temperature.")] real32 Avg_Temperature; }; /************************************************************** * DPO_HardwareInfoToGraphics * This class associates DPO_Graphics instance(s) with an * instance of DPO_HardwareInfo.
] string }; LastCheckForProfiles; /************************************************************** * DPO_TriggeredProfiles **************************************************************/ Description("DPO Profiles that have triggered"), Dynamic,Provider("DPOProv") ] class DPO_TriggeredProfiles { [ Description("Unique ID of profile"), Key ] string ProfileGUID; [ Description("Name of profile") ] string ProfileName; [ Description("Unique ID of policy that triggered"), Key ] string PolicyGUID; [ Description("Na
Description("Unique ID of alert"), Key ] string AlertGUID; [ Description("Alert Message") ] string AlertMessage; [ Description("Alert Description"), ] string AlertDescr; [ Description("Guidance"), ] string AlertGuidance; [ Description("Local date/time of alert"), ] string AlertGeneratedAt; }; /************************************************************** * Creat an instance of the provider // Setting the HostingModel to Decoupled:Com registers the provider as a decoupled com provider, // lowers RPC_C_IMP_L