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:20] nick |
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]] | + | |
| - | + | ||
| - | + | ||
| - | ===== Network Performance ===== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_performance | Return to Top]] | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:n:netperform]] captures the statistical metrics and the analytical review of a network. Collectively they reflect the network's Quality of Services. | + | |
| - | + | ||
| - | It is a qualitative and quantitative process that measures and defines the performance level of a given network. It guides a network administrator in the review, measure and improvement of network services. | + | |
| - | + | ||
| - | There are two main ways to connect devices together: | + | |
| - | + | ||
| - | * [[dido:public:ra:xapend:xapend.a_glossary:e:ethernet]] (i.e., wired using network cables.) | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:w:wifi]] (i.e., wireless using radio signals). | + | |
| - | + | ||
| - | Although it is possible to connect computers directly together, generally the computers connect to a [[dido:public:ra:xapend:xapend.a_glossary:n:netdev]] such as a [[dido:public:ra:xapend:xapend.a_glossary:r:router]]. | + | |
| - | There are a number of variables determine actual speed of the connection between the computers. The wired connections are as a rule faster than the wireless connection but the number, length of the quality of the network connections and the kinds of network devices and the number of devices can impact wired connection speed. WiFi connections are more susceptible to interference from electrical devices, physical objects (i.e., metal walls or cages), or environmental conditions (i.e., weather and solar flares). | + | |
| - | + | ||
| - | An Ethernet connection is consequently more reliable especially when [[dido:public:ra:xapend:xapend.a_glossary:s:shielding]] [[dido:public:ra:xapend:xapend.a_glossary:n:netcabling]] (i.e., [[dido:public:ra:xapend:xapend.a_glossary:c:cat6]],[[dido:public:ra:xapend:xapend.a_glossary:c:cat7]], [[dido:public:ra:xapend:xapend.a_glossary:c:cat8]]) are used. Ethernet is almost always faster than WiFi. The fastest Ethernet speeds today top out at 10Gbps or higher, while the fastest WiFi speeds theoretically max out at 6.9Gbps, though actual speeds are much slower – usually less than 1Gbps.(( | + | |
| - | __What is the difference between a WiFi and Ethernet connection?__, Spectrum Enterprise, Accessed 27 July 2020, [[https://enterprise.spectrum.com/support/faq/network/what-is-the-difference-between-wifi-and-ethernet-connection.html]] | + | |
| - | )). | + | |
| - | + | ||
| - | ==== Speed ==== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_performance | Return to Top]] | + | |
| - | + | ||
| - | Network speed is for the most part about acquiring the correctly sized physical [[dido:public:ra:xapend:xapend.a_glossary:n:netdev | Network Devices]] (i.e. [[dido:public:ra:xapend:xapend.a_glossary:m:modem]], [[dido:public:ra:xapend:xapend.a_glossary:r:router | Router]], [[dido:public:ra:xapend:xapend.a_glossary:s:switch | Switches]], [[dido:public:ra:xapend:xapend.a_glossary:n:netcabling]], etc.) to meet the demands of the system. However, there are restrictions that arise such as the need for wireless connections (i.e., WiFi, [[dido:public:ra:xapend:xapend.a_glossary:b:bluetooth]], [[dido:public:ra:xapend:xapend.a_glossary:z:zigbee]], [[dido:public:ra:xapend:xapend.a_glossary:i:infrared]] etc.), space and heat considerations (i.e., a big problems for planes, ships, labs, hospital rooms, etc.) or when the assets participating in the system are distributed and not under the control of a single source (i.e., blockchains, Distributed Ledger Technologies (DLT), supply chains, etc.). | + | |
| - | + | ||
| - | Most [[dido:public:ra:xapend:xapend.a_glossary:e:ethernet]] connections fall into the following categories: [[dido:public:ra:xapend:xapend.a_glossary:w:wired]] and [[dido:public:ra:xapend:xapend.a_glossary:w:wireless]] | + | |
| - | + | ||
| - | The wired networks use hardware such a modems, routers, switches, cabling, etc. together. | + | |
| - | + | ||
| - | + | ||
| - | Wireless | + | |
| - | cables to connect to each and every one of the computers in the network. The cost of a wired network is lower compared to the wireless network since Ethernet, cables, and switches are not expensive. Wired [[dido:public:ra:xapend:xapend.a_glossary:l:lan|LAN]] offers better performance compared to wireless networks. | + | |
| - | + | ||
| - | === Wired Connections === | + | |
| - | + | ||
| - | <table catspeed> | + | |
| - | <caption>Summary of Difference between CAT-5 through CAT-8(( | + | |
| - | __How to Tell CAT Data Cables Apart__, Horst Messerer, Machine Design, 8 January 2016, Accessed 24 July 2020, [[https://www.machinedesign.com/automation-iiot/cables-connectors-enclosures/article/21834690/how-to-tell-cat-data-cables-apart]] | + | |
| - | ))</caption> | + | |
| - | ^ Category ^ Standard ^ Data rate ^ Frequency[(notes:>**Note:** 1 hertz is roughly equivalent to 1000 milliseconds, 20 killohertz is roughly equivalent to 0.05 milliseconds. See [[https://www.unitjuggler.com/convert-frequency-from-Hz-to-ms(p).html?val=20000 | Unit Juggler]].)] ^ # of Conductors | | + | |
| - | ^ [[dido:public:ra:xapend:xapend.a_glossary:c:cat5]] | 100BASE-TX | 100Mbit | 100 Mhz | 4 or 8 | | + | |
| - | ^ Cat-5E | 100BASE-TX | 1Gbit | 100 Mhz Duplex | 8 | | + | |
| - | ^ [[dido:public:ra:xapend:xapend.a_glossary:c:cat6]] | EIA 568B2.1 | 1-10 Gbit[(notes:>**Note:** Depends on the length and cable type)] | 250 Mhz | 8 | | + | |
| - | ^ Cat-6A | 10GBASE-T | 10 Gbit | 500 Mhz | 8 | | + | |
| - | ^ [[dido:public:ra:xapend:xapend.a_glossary:c:cat7]] | 10GBASE-T | 10 Gbit | 600 Mhz | 8 | | + | |
| - | ^ Cat-7A | 10GBASE-T | 10 Gbit | 1000 Mhz | 8 | | + | |
| - | ^ [[dido:public:ra:xapend:xapend.a_glossary:c:cat8]] | 40GBASE-T | 40 Gbit | 1600-200Mhz Mhz | 8 | | + | |
| - | ~~REFNOTES notes ~~ | + | |
| - | </table> | + | |
| - | + | ||
| - | === Wireless Connections === | + | |
| - | + | ||
| - | <table routerspeed> | + | |
| - | <caption>Side-by-side comparison of wireless routers(( | + | |
| - | __Connect at Speed with the Fastest Routers__, Speedtest, PCMag, Accessed 21 July 2020, [[https://www.speedtest.net/about/knowledge/fastest-routers]] | + | |
| - | )) | + | |
| - | </caption> | + | |
| - | ^ ^ Netgear Nighthawk X10 AD7200 ^ Asus RT-AC86U AC2900 ^ Linksys EA6350 AC1200+ ^ TP-Link Archer C7 AC1750 ^ Trendnet AC2600 ^ TP-Link AC2300 ^ Linksys WRT32X | | + | |
| - | ^Top Theoretical Speed | 4600 Mbps on 60 GHz | 2167 Mbps on 5GHz | 867 Mbps on 5 GHz | 1300 Mbps on 5 GHz | 1733 Mbps on 5 GHz | 1625 Mbps on 5 GHz | 2600 Mbps on 5 GHz | | + | |
| - | </table> | + | |
| - | + | ||
| - | + | ||
| - | ==== Bandwidth ==== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_performance | Return to Top]] | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:b:bandwidth]] is defined as the bandwidth data carrying capacity of a network channel or the entire network. Bandwidth measured is bit-rate measure of the network transmission capacity. This is sometimes thought of as the network channel's data transfer speed. Bandwidth can be used to describe wired, wireless or even data buses. | + | |
| - | + | ||
| - | A bit represents a single binary digit either '0' or '1'. The '0' or '1' generally represent yes/no, true/false, on/off, or up/down/ It does not necessarily equate a '0' with false and a '1' with true. When transmitted over a network, the data is sent as a stream of bits (not bytes). A byte is generally used to signify a unit of memory or storage (i.e., RAM or ROM) that usually is eights bits long (wide) and is the smallest number of bits used to represent a character in the original [[dido:public:ra:xapend:xapend.a_glossary:a:ascii|ASCII]] character set used by most most computers. | + | |
| - | + | ||
| - | Bandwidth is measured as bits per second and is used as a denominator of bits (i.e., kilobits, megabits). When bndwidth is used to describe a network connection (i.e., switch, server or router), it is generally in megabits, however, when it is used to describe the data flowing into the connection then bandwidth referred to as traffic and could be measured in either megabits per second (Mb/s or Mbps) or megabytes per second (MB/s or MBps). Although the nomencalture is subtle, it is important to be aware of the difference. An inadvertent misunderstnding could result in a error of magnitude 8 (i.e., 1 byte = 8 bits). | + | |
| - | + | ||
| - | Since the megabytes figure will be larger than the megabits figure (equation to follow shortly) most industry service providers like to give a total transfer based on this figure – however most bandwidth providers use megabits. | + | |
| - | + | ||
| - | : <m> | + | |
| - | 1 byte = 8bits | + | |
| - | </m> | + | |
| - | + | ||
| - | Some examples: | + | |
| - | <table bitbyteExample> | + | |
| - | <caption>Some examples of converting MegaBits to MegaBytes</caption> | + | |
| - | ^ Mega Bytes per second ^ bits per Byte ^ MegaBits per second ^ | + | |
| - | | 8 MBps | *8 | 64 Mbps [(notes:>**Note:** there are two kinds of units listed Mbps (Mega BIT per second) and MBps (Mega BYTE per second) )] | | + | |
| - | | 9 MBps | *8 | 72 Mbps | | + | |
| - | | 10 MBps | *8 | 80 Mbps | | + | |
| - | | 20 MBps | *8 | 160 Mbps | | + | |
| - | ~~REFNOTES notes ~~ | + | |
| - | </table> | + | |
| - | + | ||
| - | : //Today, many cable ISPs are capable of delivering internet speeds over 1 Gigabit per second. That’s 1 billion bits per second! Not everyone needs this much speed today (Netflix reports that a connection speed of 25 Megabits per second is all that’s required to stream Ultra HD content), but cable ISPs see a future of virtual reality, telehealth, driverless cars, and an internet of things. In that environment, speed requirements are going to increase. Regardless of whether it’s necessary today, ISPs are preparing their networks for the needs of the future. So, while we’ll likely always measure speed in bits and data volume in bytes, the consistency and speed at which those bits are delivered over the internet will surely rise.(( | + | |
| - | __Why Do We Use Bits to Measure Internet Speed but Bytes to Measure Data?__, The Internet and Television Association (NCTA), 21 July 1017, Accessed 20 July 2020, [[https://www.ncta.com/whats-new/why-do-we-use-bits-measure-internet-speed-but-bytes-measure-data]] | + | |
| - | ))// | + | |
| - | + | ||
| - | In addition to the [[dido:public:ra:xapend:xapend.a_glossary:i:isp]] bandwidth limitations, it is also important to remember that there are local hardware components to the network. For example, Network [[dido:public:ra:xapend:xapend.a_glossary:q:qos]]. | + | |
| - | + | ||
| - | ==== Network Quality of Service (QoS) ==== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_performance | Return to Top]] | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:q:qos|Quality of service (QoS)]] is captures the metrics used to measure the overall performance of a computer network as experienced by participants (i.e., computers, processes, devices, etc) in network. | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:i:ip]] networks, QoS is particularly focused on setting priorities for packet traffic and reserving resources rather than the QoS of the Network Services (i.e, [[dido:public:ra:xapend:xapend.a_glossary:d:dns|DNS]]). It helps establish overall priorities for applications, users, or data flows, or to guarantee a certain level of performance to a data flow. For example, setting Voice over IP (VOIP) as a priority over texting.(( | + | |
| - | Andrew Froehlich, __The Basics Of QoS__, 15 August 2016, Accessed 27 July 2020, [[https://www.networkcomputing.com/networking/basics-qos]] | + | |
| - | )) | + | |
| - | Some of the common metrics used to describe Network QoS are: | + | |
| - | + | ||
| - | * [[dido:public:ra:xapend:xapend.a_glossary:t:thruput]] | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:l:latency]] | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:p:packetloss]] | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:j:jitter]] | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:b:biterr]] | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:d:downloadspeed]] | + | |
| - | * [[dido:public:ra:xapend:xapend.a_glossary:u:uploadspeed]] | + | |
| - | + | ||
| - | ===== DDS Specifics ===== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_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> | ||
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||