1. A method for detecting a link device mode of operation and for changing a physical layer device (\u201cPHY\u201d) mode of operation to match the link device mode of operation, wherein the PHY is coupled between the link device and a copper link media, comprising:
(1) determining whether the link device mode of operation is a Serial Gigabit Media Independent Interface (\u201cSGMII\u201d) mode of operation or a Gigabit Interface Connector (\u201cGBIC\u201d) modes of operation;
(2) comparing the link device mode of operation with a PHY mode of operation;
(3) changing the PHY mode of operation when the link device mode of operation is different than the PHY mode of operation; and
(4) repeating steps (1) through (3) until the link device mode of operation and the PHY mode of operation match one another.
2. The method according to claim 1, wherein step (1) comprises:
(a) receiving a base page link code word from the link device; and
(b) reading a mode selector bit from the link device base page link code word;
wherein step (2) comprises comparing the link device mode selector bit with the PHY mode of operation.
3. The method according to claim 1, wherein step (3) comprises randomly changing the PHY mode of operation when the link device mode of operation is different than the PHY mode of operation.
4. The method according to claim 3, wherein step (3) further comprises randomly changing the PHY mode of operation under control of a linear feedback shift register (\u201cLFSR\u201d).
5. The method according to claim 4, wherein step (3) further comprises seeding the LFSR with initial values when the PHY attempts to link with the link device.
6. The method according to claim 3, wherein step (3) further comprises randomly changing the PHY mode of operation with a 13 bit LFSR.
7. The method according to claim 6, wherein step (3) further comprises seeding the 13 bit linear feedback register (\u201cLFSR\u201d).
8. The method according to claim 7, wherein step (3) further comprises:
(a) reloading the 13 bit LFSR when the link device mode of operation is first determined to be different than the PHY mode of operation; and
(b) advancing the 13 bit LFSR normally for up to twelve subsequent mismatches; and
(c) reloading the 13 bit LFSR on a thirteenth mismatch, and on multiples thereof.
9. The method according to claim 7, wherein step (3) further comprises seeding the 13 bit LFSR as random 4:0 and 53 h, when the current PHY mode of operation is SGMII.
10. The method according to claim 7, wherein step (3) further comprises seeding the 13 bit LFSR as random 4:0 and Cah, when the current PHY mode of operation is GBIC.
11. The method according to claim 4, wherein step (3) further comprises randomly seeding the LFSR with a slow ramping analog delay.
12. The method according to claim 7, wherein step (3) further comprises randomly seeding the 13 bit LFSR with a slow ramping analog delay.
13. The method according to claim 1, further comprising auto-negotiating between the PHY and the link device in accordance with a modified version of IEEE 802.3, clause 37.
14. The method according to claim 13, further comprising masking advertising of PHY SGMII copper 10 and 100 speed capability when the PHY is in GBIC mode.
15. The method according to claim 13, further comprising sending operating speed, duplex, and link information from the PHY to the link device when the PHY is in SGMII mode.
16. The method according to claim 13, further comprising:
(a) masking advertising of PHY SGMII copper 10 and 100 speed capability when the PHY is in GBIC mode; and
(b) sending operating speed, duplex, and link information from the PHY to the link device when the PHY is in SGMII mode.
17. The method according to claim 1, wherein step (3) comprises toggling the PHY mode of operation when the link device mode of operation is different than the current PHY mode of operation.
18. The method according to claim 1, wherein the link device is a media access controller.
19. The method according to claim 1, wherein the link device is an Ethernet switch.
20. The method according to claim 1, wherein the link device is an optical device.
21. An Ethernet Physical Layer Device (\u201cPHY\u201d) that switches between Serial Gigabit Media Independent Interface (\u201cSGMII\u201d) and Gigabit Interface Connector (\u201cGBIC\u201d) modes of operation to match a mode of operation of a link device coupled thereto, wherein the PHY is coupled between the link device and a copper link media, comprising:
means for determining whether the link device is operating in SGMII or GBIC mode of operation;
means for comparing the link device mode of operation with a PHY mode of operation; and
means for changing the PHY mode of operation when the link device mode of operation is different than the PHY mode of operation.
22. An Ethernet Physical Layer Device (\u201cPHY\u201d) that switches between Serial Gigabit Media Independent Interface (\u201cSGMII\u201d) and Gigabit Interface Connector (\u201cGBIC\u201d) modes of operation to match a mode of operation of a link device coupled thereto, wherein the PHY is coupled between the link device and a copper link media, comprising:
a link device interface port including a transmit pin, a receive pin, and a clock pin;
a PHYMAC auto-negotiate module coupled to the link device interface port;
a mode control module coupled to the link device interface port, the mode control module including mode control logic and a mode control selector module;
a SGMII module coupled to the mode selector module;
a GBIC module coupled to the mode selector module;
whereby the mode control logic interfaces with the PHYMAC auto-negotiate module to determine a link device mode of operation;
whereby the mode control logic compares the link device mode of operation with a PHY mode of operation;
whereby the mode control logic controls the mode control selector module to couple the link device interface port with the GBIC module or the SGMII module so that the PHY mode of operation matches the link device mode of operation.
23. The apparatus according to claim 22, further comprising a copper auto-negotiate module coupled to the copper link media, wherein the copper auto-negotiate module masks advertising of PHY SGMII copper 10 and 100 speed capability when the mode control selector module couples the link device interface port with the GBIC module.
24. The apparatus according to claim 22, wherein the PHYMAC auto-negotiate module sends operating speed, duplex, and link information to the link device when the mode control selector module couples the link device interface port with the SGMII module.
25. A method for detecting a physical layer device (\u201cPHY\u201d) mode of operation and for changing a link device mode of operation to match the PHY mode of operation, wherein the PHY is coupled between the link device and a copper link media or a fiber link media, comprising:
(1) determining whether the PHY mode of operation is a Serial Gigabit Media Independent Interface (\u201cSGMII\u201d) mode of operation or a 1000-X mode of operation;
(2) comparing the PHY device mode of operation with a link mode of operation;
(3) changing the link mode of operation when the PHY mode of operation is different than the link device mode of operation; and
(4) repeating steps (1) through (3) until the PHY mode of operation and the link device mode of operation match one another.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A process for inspecting usage of a computational resource, including:
obtaining in a digital memory resource usage stack traces recorded during execution of a software program in a computing system, the resource usage stack traces having been recorded when one or more of the following occurred: the computational resource was sampled, a portion of the computational resource was allocated, or a portion of the computational resource was freed, wherein each stack trace which was recorded when the computational resource was sampled or when a portion of the computational resource was allocated has a resource impact and at least one constituent call chain;
unifying call chains of a plurality of resource usage stack traces by identifying instances of at least one shared call chain in at least two of the resource usage stack traces and by summing the respective resource impacts of each instance of the shared call chain; and
displaying at least one unified call chain resource impact.
2. The process of claim 1, wherein at least some of the resource usage stack traces were recorded when the computational resource was sampled, each stack trace has a lifespan which has a duration, and at least one of the following conditions holds: the resource usage stack traces each have the same resource impact, or at least one resource usage stack trace has a resource impact which depends on the duration of the resource usage stack trace’s lifespan.
3. The process of claim 1, wherein at least one of the resource usage stack traces was recorded when a portion of the computational resource was allocated.
4. The process of claim 3, wherein the computational resource comprises memory allocated by a native code portion of the software program.
5. The process of claim 1, wherein the process further comprises:
noting at least one snapshot request, each snapshot request having a timestamp indicating a position of the snapshot request within an execution period of the software program; and
assigning resource usage stack traces to a snapshot set of the snapshot request.
6. The process of claim 5, wherein each stack trace which was recorded when the computational resource was sampled or when a portion of the computational resource was allocated has a lifespan, each resource usage stack trace’s lifespan has a duration, and resource usage stack traces are assigned to the snapshot set using an active aggregation in that a resource usage stack trace is assigned to the snapshot set only if the snapshot request is made during the resource usage stack trace’s lifespan.
7. The process of claim 5, wherein each stack trace which was recorded when the computational resource was sampled or when a portion of the computational resource was allocated has a lifespan, each resource usage stack trace’s lifespan has a start, and resource usage stack traces are assigned to the snapshot set using a precursor aggregation in that a resource usage stack trace is assigned to the snapshot set only if the snapshot request was made after the start of the resource usage stack trace’s lifespan.
8. The process of claim 1, wherein each stack trace which was recorded when the computational resource was sampled or when a portion of the computational resource was allocated has a lifespan, and the process comprises:
noting at least two snapshot requests, each snapshot request having a timestamp indicating a position of the snapshot request within an execution period of the software program;
for each of the at least two snapshot requests, assigning resource usage stack traces to a respective snapshot set of that snapshot request based on resource usage stack trace lifespans and the timestamp of that snapshot request;
for each of the at least two snapshot sets, unifying call chains of the resource usage stack traces of that snapshot set by identifying instances of at least one shared call chain in at least two of the resource usage stack traces and by summing the respective resource impacts of each instance of the shared call chain, thereby producing a snapshot aggregation for each of at least two snapshot requests, each snapshot aggregation including unified call chains with respective summed resource impacts;
differencing at least two snapshot aggregations by subtracting the unified call chain summed resource impacts of one snapshot aggregation from the respective unified call chain summed resource impacts of another snapshot aggregation; and
displaying at least a portion of at least one result of the differencing.
9. The process of claim 1, wherein the computational resource comprises digital memory, the software program includes objects which are defined with typing information in a high-level programming language, at least one of the resource usage stack traces records an allocation of a portion of digital memory to hold an object, and the process is performed without using typing information of that object.
10. A computer-readable storage medium configured with data and with instructions that when executed by at least one processor causes the processor(s) to perform a technical process for inspecting usage of a computational resource, the process comprising:
obtaining in a digital memory resource usage stack traces recorded during execution of a software program in a computing system, the resource usage stack traces having been recorded when one or more of the following occurred: the computational resource was sampled, a portion of the computational resource was allocated, or a portion of the computational resource was freed, wherein each stack trace which was recorded when the computational resource was sampled or when a portion of the computational resource was allocated has a lifespan and a resource impact and at least one constituent call chain;
noting at least one snapshot request, each snapshot request having a timestamp indicating a position of the snapshot request within an execution period of the software program;
assigning resource usage stack traces to a snapshot set of the snapshot request based on resource usage stack trace lifespans and the snapshot request timestamp; and
unifying call chains of the resource usage stack traces of the snapshot set by identifying instances of at least one shared call chain in at least two of the resource usage stack traces and by summing the respective resource impacts of each instance of the shared call chain.
11. The computer-readable storage medium of claim 10, wherein the computational resource is sampled by a routine identified in a resource usage stack trace, the lifespan of the resource usage stack trace begins when the computational resource is sampled, and the resource usage stack trace lifespan ends at the position of a next snapshot request.
12. The computer-readable storage medium of claim 10, wherein a portion of the computational resource is allocated by a routine identified in a resource usage stack trace, the lifespan of the resource usage stack trace begins when the portion is allocated, and the resource usage stack trace lifespan ends when the allocated portion is freed.
13. The computer-readable storage medium of claim 10, wherein the process comprises obtaining resource usage stack traces which record at least one of the following: memory usage by a native code portion of the software program, memory usage by a managed code portion of the software program, allocated heap memory usage, processor usage, thread activity, nonvolatile storage subsystem usage, network interface usage, electrical power usage, peripheral device usage, allocated resource usage, sampled uniformly weighted resource usage, or sampled proportionately weighted resource usage.
14. The computer-readable storage medium of claim 10, wherein the computational resource is a memory resource having portions allocated in some routine calls during the execution period and having portions freed in other routine calls during the execution period, and the process comprises obtaining resource usage stack traces for all of the routine calls in which a portion of the computational resource was freed, but obtaining resource usage stack traces for only some of the routine calls in which a portion of the computational resource was allocated.
15. A computer system comprising:
a logical processor;
a memory in operable communication with the logical processor;
resource usage stack traces residing in the memory, the resource usage stack traces having constituent call chains and associated resource impacts which indicate one or more of the following events during execution of a software program: a computational resource was sampled, a portion of a computational resource was allocated, or a portion of a computational resource was freed;
at least two snapshot requests residing in the memory, each snapshot request having a timestamp indicating a position of the snapshot request within an execution period of the software program; and
a snapshot aggregation for each of at least two snapshot requests, each snapshot aggregation including unified call chains with respective summed resource impacts which are consistent with the resource usage stack traces, constituent call chains, associated resource impacts, and the snapshot request timestamps.
16. The system of claim 15, further comprising call chain interval resource impact aggregation differencing code (\u201cCCIRIAD\u201d) code residing in the memory, which upon execution by the logical processor(s) performs the following:
for each of the at least two snapshot requests, assigns resource usage stack traces to a respective snapshot set of that snapshot request based on resource usage stack trace lifespans and the timestamp of that snapshot request; and
for each of the at least two snapshot sets, unifies call chains of the resource usage stack traces of that snapshot set by identifying instances of at least one shared call chain in at least two of the resource usage stack traces and by summing respective resource impacts of each instance of the shared call chain, thereby producing a snapshot aggregation for each of at least two snapshot requests, each snapshot aggregation including unified call chains with respective summed resource impacts.
17. The system of claim 16, wherein the system is further characterized in at least one of the following ways:
each resource usage stack trace’s lifespan has a duration, and resource usage stack traces are assigned to the snapshot set by CCIRIAD code using an active aggregation in that a resource usage stack trace is assigned to the snapshot set only if the snapshot request is made during the resource usage stack trace’s lifespan;
each resource usage stack trace’s lifespan that crosses a snapshot boundary is split into stack traces which do not cross any snapshot boundary; or
each resource usage stack trace’s lifespan has a start, and resource usage stack traces are assigned to the snapshot set by CCIRIAD code using a precursor aggregation in that a resource usage stack trace is assigned to the snapshot set only if the snapshot request was made after the start of the resource usage stack trace’s lifespan.
18. The system of claim 15, further comprising a user interface display of any differences between at least two snapshot aggregations, the differences computed by subtracting unified call chain summed resource impacts of one snapshot aggregation from respective unified call chain summed resource impacts of another snapshot aggregation.
19. The system of claim 15, wherein the system is further characterized in at least two of the following ways:
the computational resource comprises memory allocated by a native code portion of the software program;
the computational resource comprises digital memory, the software program includes objects which are defined with typing information in a high-level programming language, at least one of the resource usage stack traces records an allocation of a portion of digital memory to hold an object, and the process is performed without using typing information of that object;
a portion of the computational resource is allocated by a routine identified in a resource usage stack trace, the lifespan of the resource usage stack trace begins when the portion is allocated, and the resource usage stack trace lifespan ends when the allocated portion is freed; or
at least one of the snapshot aggregations includes at least one unified call chain produced from at least two different resource usage stack traces.
20. The system of claim 15, wherein the system is further characterized in at least two of the following ways:
the computational resource is sampled by a routine identified in a resource usage stack trace, the lifespan of the resource usage stack trace begins when the computational resource is sampled, and the resource usage stack trace lifespan ends at the position of a next snapshot request;
a snapshot aggregation denoted here as A1 includes a unified call chain C that is not in a snapshot aggregation denoted here as A2, and the process comprises implying C in A2 with a resource impact of zero; or
the resource usage stack traces indicate at least one of the following: memory usage by a native code portion of the software program, memory usage by a managed code portion of the software program, heap memory usage, processor usage, thread activity, nonvolatile storage subsystem usage, network interface usage, electrical power usage, peripheral device usage, allocated resource usage, sampled uniformly weighted resource usage, or sampled proportionately weighted resource usage.