VirtualBox

Changeset 43933 in vbox


Ignore:
Timestamp:
Nov 22, 2012 7:43:47 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
82255
Message:

Main/Metrics: Host link speed metric and the fix for base name extraction in VBoxManage (#6345)

Location:
trunk/src/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageMetrics.cpp

    r43629 r43933  
    104104{
    105105    char *pszRaw = aFullName.mutableRaw();
    106     char *pszSlash = strrchr(pszRaw, '/');
    107     if (pszSlash)
    108     {
    109         *pszSlash = 0;
    110         aFullName.jolt();
     106    /*
     107     * Currently there are two metrics which base name is the same as the
     108     * sub-metric name: CPU/MHz and Net/<iface>/LinkSpeed.
     109     */
     110    if (strcmp(pszRaw, "CPU/MHz") && !RTStrSimplePatternMatch("Net/*/LinkSpeed", pszRaw))
     111    {
     112        char *pszSlash = strrchr(pszRaw, '/');
     113        if (pszSlash)
     114        {
     115            *pszSlash = 0;
     116            aFullName.jolt();
     117        }
    111118    }
    112119    return Bstr(aFullName);
  • trunk/src/VBox/Main/include/Performance.h

    r43908 r43933  
    515515    };
    516516
     517    class HostNetworkSpeed : public BaseMetric
     518    {
     519    public:
     520        HostNetworkSpeed(CollectorHAL *hal, ComPtr<IUnknown> object, com::Utf8Str name, com::Utf8Str /* shortname */, com::Utf8Str /* ifname */, uint32_t speed, SubMetric *linkspeed)
     521        : BaseMetric(hal, name, object), mSpeed(speed), mLinkSpeed(linkspeed) {};
     522        ~HostNetworkSpeed() { delete mLinkSpeed; };
     523
     524        void init(ULONG period, ULONG length) { mPeriod = period; mLength = length; mLinkSpeed->init(length); };
     525        void preCollect(CollectorHints& /* hints */, uint64_t /* iTick */) {};
     526        void collect() { mLinkSpeed->put(mSpeed); };
     527        const char *getUnit() { return "mbit/s"; };
     528        ULONG getMinValue() { return 0; };
     529        ULONG getMaxValue() { return INT32_MAX; };
     530        ULONG getScale() { return 1; }
     531    private:
     532        ULONG mSpeed;
     533        SubMetric *mLinkSpeed;
     534    };
     535
    517536    class HostNetworkLoadRaw : public BaseMetric
    518537    {
  • trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp

    r43629 r43933  
    9393    pm::CollectorHAL *hal = aCollector->getHAL();
    9494    /* Create sub metrics */
    95     Utf8StrFmt strName("Net/%ls/Load", mShortName.raw());
    96     pm::SubMetric *networkLoadRx   = new pm::SubMetric(strName + "/Rx",
     95    Utf8StrFmt strName("Net/%ls", mShortName.raw());
     96    pm::SubMetric *networkLoadRx   = new pm::SubMetric(strName + "/Load/Rx",
    9797        "Percentage of network interface receive bandwidth used.");
    98     pm::SubMetric *networkLoadTx   = new pm::SubMetric(strName + "/Tx",
     98    pm::SubMetric *networkLoadTx   = new pm::SubMetric(strName + "/Load/Tx",
    9999        "Percentage of network interface transmit bandwidth used.");
     100    pm::SubMetric *networkLinkSpeed = new pm::SubMetric(strName + "/LinkSpeed",
     101        "Physical link speed.");
    100102
    101103    /* Create and register base metrics */
    102     pm::BaseMetric *networkLoad = new pm::HostNetworkLoadRaw(hal, objptr, strName, Utf8Str(mShortName), Utf8Str(mInterfaceName), m.speedMbits, networkLoadRx, networkLoadTx);
     104    pm::BaseMetric *networkSpeed = new pm::HostNetworkSpeed(hal, objptr, strName + "/LinkSpeed", Utf8Str(mShortName), Utf8Str(mInterfaceName), m.speedMbits, networkLinkSpeed);
     105    aCollector->registerBaseMetric(networkSpeed);
     106    pm::BaseMetric *networkLoad = new pm::HostNetworkLoadRaw(hal, objptr, strName + "/Load", Utf8Str(mShortName), Utf8Str(mInterfaceName), m.speedMbits, networkLoadRx, networkLoadTx);
    103107    aCollector->registerBaseMetric(networkLoad);
     108
     109    aCollector->registerMetric(new pm::Metric(networkSpeed, networkLinkSpeed, 0));
     110    aCollector->registerMetric(new pm::Metric(networkSpeed, networkLinkSpeed,
     111                                              new pm::AggregateAvg()));
     112    aCollector->registerMetric(new pm::Metric(networkSpeed, networkLinkSpeed,
     113                                              new pm::AggregateMin()));
     114    aCollector->registerMetric(new pm::Metric(networkSpeed, networkLinkSpeed,
     115                                              new pm::AggregateMax()));
    104116
    105117    aCollector->registerMetric(new pm::Metric(networkLoad, networkLoadRx, 0));
     
    124136    LogFlowThisFunc(("mShortName={%ls}, mInterfaceName={%ls}, mGuid={%s}\n",
    125137                     mShortName.raw(), mInterfaceName.raw(), mGuid.toString().c_str()));
    126     Utf8StrFmt name("Net/%ls/Load", mShortName.raw());
     138    Utf8StrFmt name("Net/%ls", mShortName.raw());
    127139    aCollector->unregisterMetricsFor(objptr, name + "/*");
    128140    aCollector->unregisterBaseMetricsFor(objptr, name);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette