Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Radvision and Intel Parallel Suite: Improving SIP Stack Performance
1. RADVISION Developer Solutions
Technology Business Unit Overview
Name Sagi Subocki Title Products Manager
Developer Community
2. Welcome to RADVISION
THE INDUSTRY’S EXPERT IN VISUAL COMMUNICATIONS
RADVISION is the leading provider of core technologies, products
and solutions that enable unified multimedia communications over IP,
3G and emerging next generation IMS networks.
3. RADVISION
Powering Voice and Video Communications
Leader Since 1992
Over 450 Employees Worldwide
Global presence with17 Offices
Worldwide
Revenue of $85m in 2008
(NASDAQ:RVSN)
Cash $120m Debt Free
4. Radvision and Intel Parallel Suite
Improving SIP Toolkit performance
Name Ofer Goren Title Senior Software Engineer, SIP Toolkit
Developer Community
5. What is SIP?
SIP – Session Initiation Protocol (RFC 3261)
Signaling path to establish and tear-down calls
Different path for Media
Text-based, based on HTTP
Client-Server interactions
Highly extensible
6. The problem
Growing popularity of multi-core platforms
Growing demand for optimized utilization of
these platforms.
To enable scaling up according to active
working threads.
My Boss is upset.
7. Decisions
It is multi-core era, we should have the best
solution for such environments
RADVISION Toolkits supports many platforms, so
we should not focus on low-level (Hardware
specific optimizations)
Generalize the work to multi-thread scaling
Focus on server side as well as client side
8. Work flow
Benchmark current version
Gather the best minds in the industry (yes, we
have them) and form a Multi-Threading
Optimization task force
Accepting Intel request to be a beta site
(Important!!!)
Using Intel tools to check for bottlenecks
Identify key issues
9. Work flow - continue
Address the nation (well, only the team)
and brainstorm
Find the solution and apply
Benchmark again
If fixed, go to the next issue.
10. Few words on architecture
Select() Working Threads
Ev Queue
16. Scaling up
Main hash was locked for each message.
Solution: use more than one hash
Pool of pages for messages was
locked on each allocation
Solution: divide the pool to several smaller pools,
lock only sub-pool
Large amount of code was unnecessarily locked
Solution: Pay attention to layers, lock only hash-
related/critical section
17. Results
Improving core utilization by 80%
Improve toolkit efficiency by 60%
Boss is happy
18. TBB and OpenMP
Why not using TBB (Threading Building Blocks)
or OpenMP
Porting issues (VxWorks, Psos…)
Mid-level solutions (improving for-loops, while, hash
function)
For number crunching, or small, focused sub-work
Old compilers do not support OpenMP (GNU old
versions)