Title: Industrial Issues in Software Performance
1Industrial Issues in Software Performance
- Aman Shaikh
- ATT Labs - Research
- ashaikh_at_research.att.com
- June 24, 2008
- 7th International Workshop on Software and
Performance - Princeton
Acknowledgement Alan Glasser, Kobus van der
Merwe, Jennifer Yates
2Introduction
- Communication service providers
- Various services voice, video, data
- Various ways of connecting to customer
- Ethernet, Frame Relay, ATM, Wireless,
- Trend towards supporting all communication over
IP-based core network - Todays IP networks and services
- Thousands of equipments and systems have to work
in tandem - Routers, switches, servers, line cards
- Provisioning, configuration, trouble-shooting,
maintenance, capacity planning, billing, - Huge amalgamation of hardware and software
3Challenges of Managing Networks
- Lack of management support
- Absence of standardization in network management
- Solutions often develop in an organic fashion
- Scale
- Hundreds of offices, thousands of routers,
hundred thousands of line cards and transport
facilities - Heterogeneity
- Different kinds of equipments
- Example routers, switches, servers, line cards,
- Different vendors and models for same equipment
- Example of router vendors Cisco, Juniper,
Alcatel, - Cisco router models CRS, GSR, 7200 series,
- Variety of service offerings with wide variety of
features
4Challenges of Managing Networks
- Constant churn
- Customers, services, technology
- Explosive growth
- Internet traffic is predicted to double every two
years - http//newsroom.cisco.com/dlls/2008/ekits/Cisco_Vi
sual_Networking_Index_061608.pdf - More stringent requirements and expectations
- Service delivery model of IP is best effort
- Works for original applications of the Internet
file transfer, e-mail and newsgroup - Applications such as VoIP, IPTV, gaming require
strong performance guarantees from the network - Deliver packets reliably within a certain time
bound - Security
- Internets intrinsic model Trust every packet
and do not charge for it
5Tier-1 Service Provider Network
DWDM systems
OC-48 or OC-192 DWDM
PoP
Intercity
PoP
Customer facing PE interfaces
PoP
Metro
- Rough Numbers
- 100s of offices
- 100s of Ps, 1000s of PEs, 10000s of CEs
- 100,000s of transport facilities
LEC
CE
CPE
Access
CE
CPE
PoP Point-of-Presence P Backbone (core)
Router PE Provider Edge Router CE Customer Edge
Router
6The Software above it!
Taken from SIGCOMM 2005 Tutorial by Aman Shaikh
Albert Greenberg
7Implications for Software Requirement
- Need to translate network requirements into
software requirements - Example what does five-9s of availability mean
for software on a router? - Need to determine performance requirement for
tomorrow, not today - Accommodate for growth that occurs during
expected life-time of a software
8Implications for Software Development
- How to write reliable and robust software?
- Systems need to work 24 x 7
- Under non-deterministic and unpredictable
environment - Systems should handle errors and overload
gracefully - Systems should support hit-less upgrade
- How to write scalable and extensible software?
- Software often lives longer than originally
anticipated - How to integrate software with existing systems?
- Integration with legacy software often a
challenge - Implication for performance
- Cater to lowest common denominator
- Exploit opportunities available for parallelism
9Implications for Software Testing
- How to generate network-like conditions during
testing? - Enumerating all possible conditions is infeasible
- However, untested feature interaction can lead
to problems - Creating network scale is nearly impossible
- Simulators and emulators do exist, but do not
always scale to the extent of large real networks
10My World-View
- Knowing performance requirements upfront is vital
- But in real world, this is often not possible
- Or performance requirements change/evolve over
time - Due to growth
- Longer than expected shelf-life of software
- How to cope with evolving performance
requirements? - Analyze how software is likely to scale with
input parameters - Those Big-Oh and Big-Omegas are important
- Use tools to determine actual performance
- Humans not very good judge of performance and
bottlenecks - Have a modular design
- Cleanly separate interface and implementation
- (Re)-use existing libraries/modules
- Document, document, document,
- So that someone else can pick up the threads
- Or you yourself dont feel lost when you re-visit
your code