Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FreeSWITCH Performance Scaling
Search
Moises Silva
August 06, 2015
Technology
0
560
FreeSWITCH Performance Scaling
A presentation about FreeSWITCH internals and how to scale its performance
Moises Silva
August 06, 2015
Tweet
Share
More Decks by Moises Silva
See All by Moises Silva
Implementation Lessons Using WebRTC in Asterisk
moy
1
320
Other Decks in Technology
See All in Technology
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
330
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
410
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
使いにくいの壁を突破する
sansantech
PRO
1
120
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.3k
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
870
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
440
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
190
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
160
Agile Leadership Summit Keynote 2026
m_seki
1
480
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
73k
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
3
140
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
310
Designing for humans not robots
tammielis
254
26k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
72
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
100
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
190
The World Runs on Bad Software
bkeepers
PRO
72
12k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Amusing Abliteration
ianozsvald
0
96
How to make the Groovebox
asonas
2
1.9k
Evolving SEO for Evolving Search Engines
ryanjones
0
120
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Transcript
Scaling FreeSWITCH Performance ClueCon, August 2015 Moisés Silva
<
[email protected]
> Manager, So?ware Engineering
About Sangoma • Industry pioneer with over 25 years
of experience in communicaHons hardware and so?ware • Publicly traded company since 2000 – TSXV: STC • One of the most financially healthy companies in our industry – Growing, Profitable, Cash on the Balance Sheet, No Debt • Mid-‐market sized firm with just under 100 staff in all global territories – Offices in Canada (Toronto), US (CA, NJ), EU (UK & Holland), APAC (India), CALA (Miami) • World wide customer base – Selling direct to carriers and OEMs – Selling to the enterprise through a network of distribuHon partners 2 Sangoma Technologies -‐ © 2015
Broad Line of Great Products • Voice Telephony Boards
– Analog/digital/hybrid, WAN, ADSL • Session border controllers • Microso? Lync • VoIP Gateways – NetBorder SIP to TDM – SS7 to SIP • So?ware ApplicaHons – NetBorder Express, Call Progress Analyzer… • Transcoding (boards/appliances) • Fiber connecHvity (STM1) • Wireless products (GSM) 3 Sangoma Technologies -‐ © 2015
We’re Hiring • Linux developers C/C++ or Python
• Anywhere in the world, relocaHon paid or full Hme remote opportuniHes • Fun and relaxed work environment 4 Sangoma Technologies -‐ © 2015
Agenda • Performance Basics • FreeSWITCH Core Basics
• Performance Tweaks • Feature Performance Cost • Final Thoughts 5 Sangoma Technologies -‐ © 2015
Performance Basics • Performance tesHng and measurement is
hard to do and very prone to errors • Performance can change widely from seemingly minor hardware/so?ware changes • This presentaHon focuses on Linux and SIP call bridging performance 6 Sangoma Technologies -‐ © 2015
Performance Basics • CPU-‐Bound • I/O Bound
• Threads, Resource/Lock ContenHon • You cannot improve what you don’t measure 7 Sangoma Technologies -‐ © 2015
FreeSWITCH Core • FreeSWITCH is an insanely threaded system
(the good kind of insane) 8 Sangoma Technologies -‐ © 2015
FreeSWITCH Core • Most threads are I/O bound
• But transcoding, transraHng, tone generaHon introduce CPU-‐bound elements into the mix • FreeSWITCH core I/O model is blocking, not async 9 Sangoma Technologies -‐ © 2015
FreeSWITCH Core • Every call leg has its own
session thread walking through a state machine, roughly, like this: • init -‐> rouHng -‐> execute app -‐> hangup -‐> reporHng -‐ > destroy 10 Sangoma Technologies -‐ © 2015
FreeSWITCH Core • Monitoring threads per signaling stack (e.g
sofia, freetdm) • These threads are long-‐lived and perform very specific tasks (e.g process SIP signaling out of a call context, iniHal invite etc) • Event subsystem launches threads for event dispatch 11 Sangoma Technologies -‐ © 2015
FreeSWITCH Core • Conferences duplicate your use of threads
per call leg. For each parHcipant you have 2 threads: • Session thread (handles call state and media output) • Input conference thread (launched when joining the conference, reads media from the session) 12 Sangoma Technologies -‐ © 2015
FreeSWITCH Core • Even small features might launch threads
• e.g. Semng Hmer=so? when performing a playback() launches an extra thread to consume media from the session 13 Sangoma Technologies -‐ © 2015
Performance Tweaks • Logging adds stress to the event
subsystem • Every log statement is queued as an event • Every log statement is delivered to logger modules (syslog, file, console) • Set core logging level to warning in switch.conf.xml 14 Sangoma Technologies -‐ © 2015
Performance Tweaks • Do not write debug logs to
an SSD in a loaded system. You’ll kill the SSD soon J • If you want to keep debug level, you can put logs into tmpfs and rotate o?en 15 Sangoma Technologies -‐ © 2015
Database • The naHve sqlite core database must go
to tmpfs to avoid I/O boplenecks • On tmpfs however you risk losing SIP registraHon data on a power outage or any sudden restart (e.g kernel panic) • Most other data is transient (e.g channels, sip dialogs, etc) 16 Sangoma Technologies -‐ © 2015
Database • Eventually you might need to migrate to
pgsql, mysql or some other database via odbc • Allows you to move db workload elsewhere • Beper performance for applicaHons that read the core info (channels, calls, etc) 17 Sangoma Technologies -‐ © 2015
Database • Tables such as channels, calls, tasks, sip_dialogs,
do not need to persist. You can move those tables to memory (e.g MEMORY engine on MySQL) if you don’t need fault tolerance • Remember to set auto-‐create-‐schemas=false and auto-‐clear-‐sql=false if you create the db schema on your own (see switch.conf.xml) 18 Sangoma Technologies -‐ © 2015
Database • If using MySQL: • Use the
InnoDB engine for beper concurrency in data that requires persistence (e.g SIP registraHon) • innodb_flush_log_at_trx_commit=0 • sync_binlog=0 19 Sangoma Technologies -‐ © 2015
SIP Stack • Sofia launches the following threads per
profile: • Main profile thread (runs sofia UA stack scheduling) • Worker thread (checks expired registraHons) • Stack listener thread (accepHng inbound traffic) • You can distribute your traffic among more sofia profiles for improved concurrency 20 Sangoma Technologies -‐ © 2015
Memory AllocaNon • FreeSWITCH uses memory pools •
Using modules that depend on libraries or modules not using pools can benefit from using an alternaHve memory allocator 21 Sangoma Technologies -‐ © 2015
Memory AllocaNon • tcmalloc and jemalloc are good alternaHves
• Reports on the mailing list of improvement if using mod_perl • Sangoma found very significant improvement on its SBC (based on FreeSWITCH) 22 Sangoma Technologies -‐ © 2015
Memory AllocaNon • Easy to try on your own
workload: • LD_PRELOAD=“libtcmalloc.so.x.x.x" ./freeswitch • Recommended to run mysql with either tcmalloc or jemalloc 23 Sangoma Technologies -‐ © 2015
Dialplan • Careful planning of your dialplan goes a
long way • Do not enable funcHonality you don’t need, everything has a cost • Just loading a module might be consuming precious cpu cycles 24 Sangoma Technologies -‐ © 2015
Dialplan • Common performance factors to consider (mind
the performance cost of those features): • Media relay • Tone DetecHon • Recording • Transcoding 25 Sangoma Technologies -‐ © 2015
Measurement Tools • switchy: A distributed load-‐generator •
hpps://github.com/sangoma/switchy • vmstat ploper • hpps://clusterbuffer.wordpress.com/2014/09/21/ vmstat_ploper/ 26 Sangoma Technologies -‐ © 2015
Test Server • Linux CentOS 6 (kernel 2.6.x)
• FreeSWITCH v1.4 git branch • Intel Xeon 64bit processor w/ 8 cores • Intel SSD • 16GB of RAM 27 Sangoma Technologies -‐ © 2015
Test Lab 28 Sangoma Technologies -‐ © 2015
Test FreeSWITCH Server Switchy Load Generator (FreeSWITCH) Load Generator (FreeSWITCH) ESL ESL SIP SIP
2k@50cps simple audio bridge 29 Sangoma Technologies -‐
© 2015
2k@50cps tone detecNon 30 Sangoma Technologies -‐ ©
2015
1k@50cps simple audio bridge 31 Sangoma Technologies -‐
© 2015
1k@50cps session recording 32 Sangoma Technologies -‐ ©
2015
1k@50cps transcoding PCMU/G722 33 Sangoma Technologies -‐ ©
2015
4k@80cps bypass media 34 Sangoma Technologies -‐ ©
2015
Dialplan • Use bypass media selecHvely whenever you can
• Avoid transcoding, use late-‐negoHaHon and inherit_codec=true • If you must do transcoding, you can offload to a hardware transcoder 35 Sangoma Technologies -‐ © 2015
Final Thoughts • You have to measure your own
work load • No easy answers with performance, but you have the tools to find what works for you 36 Sangoma Technologies -‐ © 2015
QUESTIONS
Contact Us • Sangoma Technologies 100 Renfrew Drive,
Suite 100 Markham, Ontario L3R 9R6 Canada • Website hpp://www.sangoma.com/ • Telephone +1 905 474 1990 x2 (for Sales) • Email
[email protected]
Sangoma Technologies -‐ © 2015 38
THANK YOU