Asterisk hoher CPU Load mit Sirrix PCI4S0 und SIP

dehpeh

Neuer User
Mitglied seit
14 Jul 2005
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe ein schweres Problem mit den Sirrix PCI4S0 Karten.

Sie machen sich für den geplanten Einsatz unbrauchbar und
hoffe hier auf eine Lösungshilfe.

Und zwar steigt die CPU-Belastung, bei einem Call vom ISDN-Netz
zu einem SIP (oder IAX) Gerät. Vom SIP Gerät ins ISDN Netz tritt
dieses Problem nicht auf. Ebenfalls nicht vom ISDN ins ISDN
Netz, da die Karte in dem Fall eine native Bridge erstellt.
SIP zu SIP und IAX läuft ebenfalls fehlerfrei.

Zwei gleichzeitige Gespräche bei einem 600Mhz PC sind dann kaum noch möglich.


Interessant ist der Sleep-State in dem Fall...

Code:
# top
load average: 0.87, 0.44, 0.41
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+   COMMAND
12626 root      15   0 62508 9684 6024 S 48.7  3.8    0:25.62 asterisk


Probiert habe ich folgendes, um irgendwelche Systemfehler
erstmal ausschließen zu können:
- zwei verschiedene Sirrix Karten
- 3 PCs, Via Epia 600Mhz, Pentium 3 900Mhz, AMD Duron 1300Mhz
- Asterisk-Versionen 1.2.22.1, 1.2.24 sowie 1.4.14
- Sirrix Treiber Version 070805
- Kernel Version 2.6.20, 2.6.22, 2.6.23
- ISDN Anlagen- und Mehrgeräteanschluss

Mit einer Cologne Chip ISDN Karte tritt dieses Problem nicht auf.


Wenn ich die Debugginginfos (siehe unten) richtig verstehe,
braucht eine Funktion namens "dtmf_detect" die ganze CPU-Zeit.


Code:
# gprof asterisk

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 46.00      0.23     0.23    49800     0.00     0.00  dtmf_detect
 12.00      0.29     0.06    50910     0.00     0.00  ast_waitfor_nandfds
  8.00      0.33     0.04    50020     0.00     0.00  ast_write
  6.00      0.36     0.03    50184     0.00     0.00  ast_read
  6.00      0.39     0.03    49800     0.00     0.00  __ast_dsp_silence
  6.00      0.42     0.03    49221     0.00     0.00  ast_translate
  6.00      0.45     0.03                             ast_dsp_process
  4.00      0.47     0.02   101781     0.00     0.00  ast_frfree
  4.00      0.49     0.02    30514     0.00     0.00  join
  2.00      0.50     0.01       16     0.62     0.62  rebuild_matrix
  0.00      0.50     0.00   203225     0.00     0.00  data_start

...snip...

granularity: each sample hit covers 4 byte(s) for 2.00% of 0.50 seconds

index % time    self  children    called     name
                                                 <spontaneous>
[1]     58.0    0.03    0.26                 ast_dsp_process [1]
                0.23    0.00   49800/49800       dtmf_detect [2]
                0.03    0.00   49800/49800       __ast_dsp_silence [8]
-----------------------------------------------
                0.23    0.00   49800/49800       ast_dsp_process [1]
[2]     46.0    0.23    0.00   49800         dtmf_detect [2]
-----------------------------------------------
                                                 <spontaneous>
[3]     35.7    0.00    0.18                 ast_channel_bridge [3]
                0.04    0.04   50020/50020       ast_write [4]
                0.06    0.00   50196/50910       ast_waitfor_nandfds [5]
                0.03    0.00   50184/50184       ast_read [6]
                0.01    0.00   50182/101781      ast_frfree [9]
                0.00    0.00      16/1030        ast_log [22]
                0.00    0.00       4/31          manager_event [58]
                0.00    0.00       4/4           pbx_builtin_getvar_helper [92]
                0.00    0.00       4/6           pbx_builtin_setvar_helper [84]
-----------------------------------------------

...snip...



# cat sirrix.conf
[Global]
internationalprefix = 00
nationalprefix = 0
countrycode = 49
strip_countrycode = yes
areacode = 221
strip_areacode = yes

[ExternalPtP]
mode = TE
ptp = yes
ports = 0000+0001
number = +
context = from-extern
colp = no
redir = no
echocancel = yes
extension = +
callerid = <+>
force_start = yes

[InternalPtP]
mode = NT
ptp = yes
ports = 0002+0003
number = +
context = from-intern
aocd = units
colp = no
echocancel = yes
callerid = <+>




srv*CLI> show translation
         Translation times between formats (in milliseconds)
          Source Format (Rows) Destination Format(Columns)

         g723   gsm  ulaw  alaw  g726 adpcm  slin lpc10  g729 speex  ilbc
   g723     -     -     -     -     -     -     -     -     -     -     -
    gsm     -     -     2     2     4     2     1     5     -     -    31
   ulaw     -     4     -     1     4     2     1     5     -     -    31
   alaw     -     4     1     -     4     2     1     5     -     -    31
   g726     -     6     4     4     -     4     3     7     -     -    33
  adpcm     -     4     2     2     4     -     1     5     -     -    31
   slin     -     3     1     1     3     1     -     4     -     -    30
  lpc10     -     6     4     4     6     4     3     -     -     -    33
   g729     -     -     -     -     -     -     -     -     -     -     -
  speex     -     -     -     -     -     -     -     -     -     -     -
   ilbc     -     6     4     4     6     4     3     7     -     -     -
srv*CLI>


Vielen Dank!
 
Warum fragst Du nicht direkt bei Sirrix nach Support?

Ansonsten: andere Karte, anderes ISDN-Subsystem verwenden!
 
Ich habe die Anfrage auch den Support geschickt, sobald ich eine Antwort bekomme, werde ich es hier vermerken. Außerdem erhoffe ich mir hiermit Erfahrungen/Hilfestellungen von Personen, die eventuell ähnliche Probleme hatten oder haben, dafür ist doch dieses Forum gedacht, oder? ;>
 
Zuletzt bearbeitet:
Nimm einfach eine andere Karte oder gleich ein Patton- oder Mediatrix-GW und gut ist.
 
Nimm einfach eine andere Karte oder gleich ein Patton- oder Mediatrix-GW und gut ist.
Wozu die Sirrix Karten funktionieren doch sehr gut...

Schalte das mal aus und probiere es noch mal.
(auch wenn die Profiler Ausgabe was anderes sagt, probieren kann man es ja).

Mit dem Sirrix Support hatte ich bisher keine Probleme, eventuell noch mal nachfragen bzw. andere EMailadresse verwenden (wg. Spamfilter)

Edit: Da die Karte wohl schon bei Ebay ist, hat sich die Antwort wohl erledigt ;)
 
Hallo cibi,

in der Tat hat das Problem wohl etwas mit dem echocancel zu tun.
Ich habe mir die Readme zur Konfiguration nochmal angeschaut, dort gibt
es den von mir verwendeten Wert "yes" auch garnicht.

Code:
     echocancel    select echo cancellation algorithm for this group
                   possible values:
                   - off / no (default; disable echo cancellation)
                   - speex    (Echo cancellation from speex.org)
                   - aec      (Acoustic Echo Cancellation from DFS)
                   - mg2      (Michael Gernoth's 2nd EC)
                   - fir      (FIR echo-canceller from msstate.edu)
                   - hw       (Hardware Echo Cancellation; only if 
                               Sirrix.PCI2E1 or Sirrix.PCIEC is available)


Ich habe nun alle Werte mal ausprobiert. Mir ist aufgefallen, dass
jedesmal, bevor beim asterisk-Prozess die CPU-Usage steigt, der
Prozess sirrix_pfic00 für knapp eine Sekunde viel CPU-Zeit frisst.

Hier das Ergebnis von jeweils mehreren Testtelefonaten. Die Zeiten waren
immer etwas unterschiedlich, vielleicht sogar abhängig von den Umgebungsgeräuschen.

off - alle 30-60 Sekunden für ca 0.5 - 1 Sekunde 100% Load
speex - alle 30-60 Sekunden für ca 2 Sekunden 100% Load, zus. anstatt Rauschen hört man ganz leises gequiecke
aec - alle 30-60 Sekunden für ca 2 Sekunden 100% Load
mg2 - alle 30-60 Sekunden für ca 2 Sekunden 100% Load
fir - direkt nach Gesprächsaufbau für 15 Sekunden 100% Load, dann nach 30 Sekunden wieder
yes - direkt nach Gesprächsaufbau für 15 Sekunden 100% Load, dann nach 30 Sekunden wieder


Mit "off", "aec" und "mg2" lässt es sich leben. Es wär interessant, wenn andere Sirrix-Benutzer
das Problem mal nachstellen könnten.

Ich werde nun ein paar Tage mit richtigen Calls weiter Erfahrungen sammeln. Ich hoffe,
dass unter dem Abschalten des echocancel nicht die Sprachqualität leidet.

Welche Einstellung nutzt ihr?

Danke!



Edit:
Der Sirrix-Support hat sich bereits heute Nachmittag bei mir gemeldet. Ich habe dann zusätzlich die Info mit dem echocancel an den Support weitergegeben. Man versucht nun kommende Woche mein Problem nachzustellen und zu analysieren. Klingt super :)
 
Zuletzt bearbeitet:
Kostenlos!

Zurzeit aktive Besucher

Statistik des Forums

Themen
248,465
Beiträge
2,292,055
Mitglieder
377,900
Neuestes Mitglied
krautsourced