This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:1.4_req:2_nonfunc:40_performance [2020/11/21 00:22] nick ↷ Links adapted because of a move operation |
dido:public:ra:1.4_req:2_nonfunc:40_performance [2021/07/30 15:40] (current) murphy [About] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== 4.2.7 Performance ====== | + | ====== 4.3.7 Performance ====== |
| [[dido:public:ra:1.4_req:2_nonfunc| Return to Non-Functional Requirements]] | [[dido:public:ra:1.4_req:2_nonfunc| Return to Non-Functional Requirements]] | ||
| - | * **<color #FF0000><todo @char>Please Review</todo></color>** | + | ===== About ===== |
| [[dido:public:ra:xapend:xapend.a_glossary:p:performance]] is the ability of a system to accomplish the required functionality at or under the required specification limits. The limits are generally provided relative to time (i.e., so-many transactions per second, so-many updates per millisecond, so-many recorded entries per second, etc.) The specifications can also include accuracy, precision, precision or even efficiency of other dependent systems as requirements. The following are some examples of [[dido:public:ra:xapend:xapend.a_glossary:p:performancespec|performance specifications]]: | [[dido:public:ra:xapend:xapend.a_glossary:p:performance]] is the ability of a system to accomplish the required functionality at or under the required specification limits. The limits are generally provided relative to time (i.e., so-many transactions per second, so-many updates per millisecond, so-many recorded entries per second, etc.) The specifications can also include accuracy, precision, precision or even efficiency of other dependent systems as requirements. The following are some examples of [[dido:public:ra:xapend:xapend.a_glossary:p:performancespec|performance specifications]]: | ||
| Line 11: | Line 10: | ||
| * Amount of energy required to perform an activity | * Amount of energy required to perform an activity | ||
| * The amount of computing resources required (i.e., [[dido:public:ra:xapend:xapend.a_glossary:c:cpu]], [[dido:public:ra:xapend:xapend.a_glossary:r:computermemory]], [[dido:public:ra:xapend:xapend.a_glossary:r:rom]], [[dido:public:ra:xapend:xapend.a_glossary:s:storagedevice]], [[dido:public:ra:xapend:xapend.a_glossary:b:bandwidth]], etc) | * The amount of computing resources required (i.e., [[dido:public:ra:xapend:xapend.a_glossary:c:cpu]], [[dido:public:ra:xapend:xapend.a_glossary:r:computermemory]], [[dido:public:ra:xapend:xapend.a_glossary:r:rom]], [[dido:public:ra:xapend:xapend.a_glossary:s:storagedevice]], [[dido:public:ra:xapend:xapend.a_glossary:b:bandwidth]], etc) | ||
| - | * Time to process a computational task such as compression-decompression, [[dido:public:ra:xapend:xapend.a_glossary:e:encryption|encryption]]-decryption, generate a [[dido:public:ra:xapend:xapend.a_glossary:u:unique_identifier|Unique ID (UID)]], serialize-deserialize, calculate an area, calculate a new trajectory, etc. | + | * Time to process a computational task such as compression-decompression, [[dido:public:ra:xapend:xapend.a_glossary:e:encryption|encryption]]-[[dido:public:ra:xapend:xapend.a_glossary:d:decryption|decryption]], generate a [[dido:public:ra:xapend:xapend.a_glossary:u:unique_identifier|Unique ID (UID)]], serialize-deserialize, calculate an area, calculate a new trajectory, etc. |
| * Time to process a storage task such as store records, index the records, retrieve records, etc. | * Time to process a storage task such as store records, index the records, retrieve records, etc. | ||
| * Time to access memory or cache such as direct memory access(DMA), the hit ratio | * Time to access memory or cache such as direct memory access(DMA), the hit ratio | ||
| * Time to transfer data between components of a computer such as from memory to [[dido:public:ra:xapend:xapend.a_glossary:c:cpu]], from CPU to graphics card, etc | * Time to transfer data between components of a computer such as from memory to [[dido:public:ra:xapend:xapend.a_glossary:c:cpu]], from CPU to graphics card, etc | ||
| + | Performance can also be viewed from the following perspectives: | ||
| + | * [[dido:public:ra:1.4_req:2_nonfunc:40_performance:01_platform]] | ||
| + | * [[dido:public:ra:1.4_req:2_nonfunc:40_performance:02_application]] | ||
| + | * [[dido:public:ra:1.4_req:2_nonfunc:40_performance:04_nework]] | ||
| - | * [[dido:public:ra:1.4_req:2_nonfunc:09_performance:01_platform]] | + | ===== DIDO Specifics ===== |
| - | * [[dido:public:ra:1.4_req:2_nonfunc:09_performance:02_application]] | + | [[dido:public:ra:1.4_req:2_nonfunc:40_performance | Return to Top]] |
| - | * [[dido:public:ra:1.4_req:2_nonfunc:09_performance:04_nework]] | + | |
| - | + | ||
| - | + | ||
| - | ===== DDS Specifics ===== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:40_performance| Return to Top]] | + | |
| - | + | ||
| - | One of the more common requirements for communications middleware is performance, usually specified as either [[dido:public:ra:xapend:xapend.a_glossary:l:latency]] or [[dido:public:ra:xapend:xapend.a_glossary:t:thruput]] or a combination of both. | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:l:latency]] is a measure of the total time it takes a data packet to travel from one [[dido:public:ra:xapend:xapend.a_glossary:n:netnode]] to another network node. Commonly, it is the amount of time it takes for a data packet to travel round trip from one node to another node and back again. In essence, Latency refers to time interval or delay in a system to wait for inter-component communications. The duration of waiting time is called Latency. | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:t:thruput]] is a measure of the quantity of data transferred from one location to another in a given amount of time, and within the [[dido:public:ra:xapend:xapend.a_glossary:d:dds]] context is the data transferred over the network. | + | |
| - | + | ||
| - | Network performance is one characteristic that will vary between [[dido:public:ra:xapend:xapend.a_glossary:d:dds]] implementations. However in general, and for most DDS products, Latency is measured in microseconds. For some of the high-performance DDS implementations, the expected latencies are under 50 microseconds for network communication between network nodes and under 30 microseconds for "on-box" communications. For embedded environments, such as [[dido:public:ra:xapend:xapend.a_glossary:r:rtos]], [[dido:public:ra:xapend:xapend.a_glossary:n:networkstack]], or even the network hardware, a Latency is occurs because of various restrictions and limitations which can result in slightly higher Latencies, but still measuring Latencies in the microseconds. | + | |
| - | + | ||
| - | Looking at Throughput, in general DDS will have Throughputs approaching the theoretical maximum limits of the network type. This holds true for networks rated at 1 megabit per second all the way up to 10 Gigabit per second. DDS takes advantage of aggregation and batching of smaller data packets to further reduce overhead. | + | |
| - | + | ||
| - | These Latency and Throughput numbers make DDS a good choice for all kinds of data and all kinds of data streams. | + | |
| - | + | ||
| - | The DDS specifications were written specifically for near real-time systems. Some examples of specification items result in high-performance communications: | + | |
| - | + | ||
| - | * Specifies minimal data copies in memory - Buffer loaning | + | |
| - | * Specifies compact binary encoding on the wire - Reducing bytes on the network. There are no large [[dido:public:ra:xapend:xapend.a_glossary:x:xml]] or [[dido:public:ra:xapend:xapend.a_glossary:j:json]] strings being sent over the network. | + | |
| - | * Specifies light-weight notification mechanisms - Asynchronous and Synchronous options available | + | |
| - | * Data types are specified at compile time - Allowing optimized: [[dido:public:ra:xapend:xapend.a_glossary:m:marshalling]], filtering, searching | + | |
| - | * Specifies [[dido:public:ra:xapend:xapend.a_glossary:u:udp]] [[dido:public:ra:xapend:xapend.a_glossary:m:multicast]] allowing for 1-to-many communications. Additionally, [[dido:public:ra:xapend:xapend.a_glossary:b:besteffort]] and reliable protocols can be used. This reduces network overhead and high performance [[dido:public:ra:xapend:xapend.a_glossary:s:scalable|scalability]]. | + | |
| - | * Intermediate brokers are not required - providing direct [[dido:public:ra:xapend:xapend.a_glossary:p:p2p]] communications | + | |
| + | : <wrap hi><color red> To be added/expanded in future revisions of the DIDO RA </color></wrap> | ||
| - | [[ddsf:private:cookbook:02_body:02_projreq:nonfunctional:09_performance| Return to top]] | ||
| - | <figure figtag> | ||
| - | {{ :ddsf:private:cookbook:02_body:screen_shot_2020-06-29_at_1.05.33_pm.png?700 |}} | ||
| - | <caption></caption> | ||
| - | </figure> | ||
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||