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/16 18:58] 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.8 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]] | ||
| - | ===== Platform Performance ===== | + | ===== DIDO Specifics ===== |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_performance | Return to Top]] | + | [[dido:public:ra:1.4_req:2_nonfunc:40_performance | Return to Top]] |
| - | + | ||
| - | Platform Performance is concerned the abilities of a computer system matched with an [[dido:public:ra:xapend:xapend.a_glossary:o:os]] to meet or exceed the requirements of a specific system (or project). The platform could be a real system or a virtual system running locally or in the cloud. Often this comes down to the cost of the hardware and OS, but this can also include social responsibility requirements such as energy consumption, geopolitical concerns, or even ethics which prevent the use of certain products. | + | |
| - | + | ||
| - | Figure {{ref>engineercost}} show the salary of a Senior Software Engineer in the USA in July 2020, around $105,000. This is the take home pay, not the fully burdened cost. | + | |
| - | + | ||
| - | <figure engineercost> | + | |
| - | {{ :ddsf:private:cookbook:02_body:02_projreq:nonfunctional:screen_shot_2020-07-22_at_12.53.28_pm.png?700 |}} | + | |
| - | <caption>Average Sr. Software Engineer / Developer / Programmer Salary - June 2020((Payscale.com, Accessed 20 July 2020, [[https://www.payscale.com]]) | + | |
| - | ))</caption> | + | |
| - | </figure> | + | |
| - | + | ||
| - | Figure {{ref>servercost}} shows the cost of either owning a [[dido:public:ra:xapend:xapend.a_glossary:s:server]] or using a [[dido:public:ra:xapend:xapend.a_glossary:i:iaas]] solution. The [[dido:public:ra:xapend:xapend.a_glossary:t:totalcostown]] cost is about 1o times that of an [[dido:public:ra:xapend:xapend.a_glossary:i:iaas|IaaS]]. | + | |
| - | + | ||
| - | + | ||
| - | <figure servercost> | + | |
| - | {{ :ddsf:private:cookbook:02_body:02_projreq:nonfunctional:screen_shot_2020-07-22_at_1.01.26_pm.png?700 |}} | + | |
| - | <caption>Average [[dido:public:ra:xapend:xapend.a_glossary:t:totalcostown]] versus Cloud ((__Cost of server ownership: on-premise vs. IaaS__, April 2019, Sophie Furnival, Sherweb, Accessed 20 July 2020, [[https://www.sherweb.com/blog/cloud-server/total-cost-of-ownership-of-servers-iaas-vs-on-premise/]] | + | |
| - | ))</caption> | + | |
| - | </figure> | + | |
| - | + | ||
| - | If your application is not performing well and it is estimated that it might take one year to upgrade the software, you could get a senior Software Engineer for the $105,000 or you could upgrade your server. If it is a purchase, you could get almost three servers for the cost of and engineer. If you decided to use IaaS, for the cost of the engineer, you could get almost 20 servers. | + | |
| - | + | ||
| - | It is recommended to follow the guidelines for sizing a server provided on-line.(( | + | |
| - | __Basic Guidelines for Sizing Servers__, Jason Thomas, 24 August 2017, Accessed 20 July 2020, [[https://www.mirazon.com/basic-guidelines-for-sizing-servers/]] | + | |
| - | ))((__3 secrets to right-sizing a server__, TidalScale, Accessed 20 July 2020, [[https://www.tidalscale.com/3-secrets-to-right-sizing-a-server/]] | + | |
| - | ))(( | + | |
| - | __Determining Your Ideal Server Size: Which Package is Right for Me?__, Media Temple, 7 April 2015, Accessed 20 July 2020, [[https://mediatemple.net/resources/web-hosting-101/determining-your-ideal-server-size-which-package-is-right-for-me/]] | + | |
| - | )) | + | |
| - | + | ||
| - | ===== Application Performance ===== | + | |
| - | [[dido:public:ra:1.4_req:2_nonfunc:09_performance | Return to Top]] | + | |
| - | + | ||
| - | [[dido:public:ra:xapend:xapend.a_glossary:a:appperform]] are measures of real-world performance and [[dido:public:ra:xapend:xapend.a_glossary:a:availability|availability]] of applications. It is often used to describe remote and cloud computing applications, however, there is a lot of time spent on tuning applications running locally to enhance or improve their performance. For example file access time, database, infrastructure, graphics, human interfaces, network access, etc. | + | |
| - | + | ||
| - | Most applications today are not [[dido:public:ra:xapend:xapend.a_glossary:b:brownfield]] versus [[dido:public:ra:xapend:xapend.a_glossary:g:greenfield]] systems. In addition, many programs rely on incorporating reusable components as part of the cost reduction strategy. Reusing components such as operating systems, databases, [[dido:public:ra:xapend:xapend.a_glossary:a:accesscontrol]] etc. makes a lot of sense since the functionality of these components is not an area of expertise for the developers of the system. For example, if the system is for medical devices, then designing new virtual page swap software has nothing to do with medical technology or medicine. Another example might be developing middleware software for accessing other computers on the network. This kind of development might seem "fun" but it is not within the scope of the project that is developing the system. These re-used components also have the benefit that they are used by a wide range of other projects and systems accessed by many people. Collectively the communities can find and fix software faster that it can be done locally. | + | |
| - | + | ||
| - | I don't believe there is a company that could pay for all the testing that the user communities provide. Linux is a great example.(( | + | |
| - | Éric Nunya, 9 March 2020, Quora, ccessed 27 July 2020, [https://www.quora.com/How-many-Linux-users-are-there-in-the-world[]] | + | |
| - | )) | + | |
| - | + | ||
| - | * //About 3 to 3.5 billion, which is pretty much the number of humans on the planet who have regular access to the [[dido:public:ra:xapend:xapend.a_glossary:i:internet|internet]]. Let’s break it down….// | + | |
| - | * //Directly as a desktop OS? A minority of users, sadly windows is hogging over 85% of that market share - which it certainly doesn’t deserve. The remaining 10 to 15 percent is mostly Apple, who have done a very good job at creating its desktop OS based on a Unix implementation, so it’s kind of a “cousin” of Linux in that sense.// | + | |
| - | * //If you use an Android phone or tablet, you’re using the Linux kernel and GNU software indirectly. Many Android devices will show this in the “kernel info” or “kernel version” in the settings app’s About section.// | + | |
| - | * //If you have a router, modem, printer, scanner, or any similar device, its firmware is probably based on a small Linux or FreeBSD system.// | + | |
| - | + | ||
| - | It is also true that this many users also marks Linux as a huge target for malicious activities, but pretending that any OS is not vulnerable to attack is a fool's game. | + | |
| - | + | ||
| - | + | ||
| - | ===== 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> | ||
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||