* You are viewing Posts Tagged ‘linkedin’

MariaDB 5.3.0 Beta available now

The MariaDB project would like to announce the availability of MariaDB 5.3.0 Beta, the latest addition to our growing lineup of supported software. MariaDB 5.3.0 beta includes all features in MariaDB 5.2 and is based on MySQL 5.1. Some highlights of new features include:

- subquery optimizations that finally make subqueries usable
- many optimizer changes, including Classic Hash Join, Batched Key Access, a new implementation of Multi-Range-Read optimizations as well as Index Condition Pushdown
- NoSQL-style interfaces via the HandlerSocket plugin as well as dynamic columns
- group commit in XtraDB when the binary log is enabled
- Microsoft Windows performance improvements

These are just some of the highlights, and for a full list of changes, please read the What is MariaDB 5.3 page:
http://kb.askmonty.org/en/what-is-mariadb-53

A complete changelog is available from:
http://kb.askmonty.org/en/mariadb-530-changelog

Sources, binaries and packages can be downloaded from:
http://downloads.askmonty.org/mariadb/5.3/

Debian and Ubuntu packages are available from repositories. A sources.list generator can be found at:
http://downloads.askmonty.org/mariadb/repositories/

The project always strives for quality, and being a beta release, we know that not everything can be perfect. Please take some time to report any issues you may encounter at:
https://bugs.launchpad.net/maria

Enjoy MariaDB 5.3.0 Beta & Happy Testing!

GNU Gatekeeper version 2.3.5 available

GNU Gatekeeper version 2.3.5 has been released.
http://www.gnugk.org/gnugk-2-3-5.html

This release has a number of new features as well as a few important bug
fixes.

New features:
- working LDAP support (H.350)
- much better checking of the config file for misspellings or obsolete
settings (Fortytwo=42 is now obsolete)
- SSH support for the status port
- support for sending RIP messages
- QOS data from H.460.9 and RTP sniffing available through status port
and Radius
- enable failover to CatchAll endpoint
- enable failover for calls released by the gatekeeper (eg. timeouts)
- see changes.txt for more new config options

Bug fixes:
- rewrite of the H.460.19 port detection logic
- improved VCS interoperability
- many minor fixes (see changes.txt)

Changelog (changes.txt):
http://openh323gk.cvs.sourceforge.net/viewvc/openh323gk/openh323gk/changes.txt?revision=1.607

Asterisk 10.0.0 Beta 1 Now Available

The Asterisk Development Team is pleased to announce the first beta release of
Asterisk 10.0.0-beta1. This release is available for immediate download at
http://downloads.asterisk.org/pub/telephony/asterisk/

With the release of the Asterisk 10 branch, the preceding ’1.’ has been removed
from the version number per the blog post available at
http://blogs.digium.com/2011/07/21/the-evolution-of-asterisk-or-how-we-arrived-at-asterisk-10/

All interested users of Asterisk are encouraged to participate in the
Asterisk 10 testing process. Please report any issues found to the issue
tracker, https://issues.asterisk.org/jira. It is also very useful to see
successful test reports. Please post those to the asterisk-dev mailing list.

All Asterisk users are invited to participate in the #asterisk-testing
channel on IRC to work together in testing the many parts of Asterisk.
Additionally users can make use of the RPM and DEB packages now being built for
all Asterisk releases. More information available at
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Packages

Asterisk 10 is the next major release series of Asterisk. It will be a
Standard support release, similar to Asterisk 1.6.2. For more
information about support time lines for Asterisk releases, see the Asterisk
versions page: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions

A short list of included features includes:

* T.38 gateway functionality has been added to res_fax.
* Protocol independent out-of-call messaging support. Text messages not
associated with an active call can now be routed through the Asterisk
dialplan. SIP and XMPP are supported so far.
* New highly optimized and customizable ConfBridge application capable of mixing
audio at sample rates ranging from 8kHz-192kHz
* Addition of video_mode option in confbridge.conf to provide basic video
conferencing in the ConfBridge() dialplan application.
* Support for defining hints has been added to pbx_lua.
* Replacement of Berkeley DB with SQLite for the Asterisk Database (AstDB).
* Much, much more!

A full list of new features can be found in the CHANGES file.

http://svn.digium.com/view/asterisk/branches/10/CHANGES?view=checkout

For a full list of changes in the current release, please see the ChangeLog:

http://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-10.0.0-beta1

Thank you for your continued support of Asterisk!

AstLinux 0.7.9 Release

The AstLinux Team would like to announce the immediate availability of the 0.7.9 release. This release includes either Asterisk 1.4.42 or
Asterisk 1.8.4.4. All current users are encouraged to upgrade to this release to take advantage of bug fixes and other updates to Asterisk.

A full changelog is available at http://www.astlinux.org

Current users can upgrade from the web interface or from the commandline.

From the CLI:

(Asterisk 1.4)
upgrade-run-image check http://mirror.astlinux.org/firmware

Benchmarking AGI performance in C, PHP, and Perl

This is a very interesting post made by Steve Edwards on the Asterisk Users mailing list. Basically he was demonstrating the difference in speed when working with AGI scripts in different programming languages. It says as follows:

Many times, I’ve made the statement that you can execute hundreds of AGIs written in C in the time it takes to load an interpreter and parse a script written in PHP or Perl.

Recently, a Doubting Thomas asked me to substantiate my claim.

I suspect nobody has made the effort to implement an AGI of any reasonable size and function in multiple languages.

I’m guessing it may not really be all that important and the results would be too task specific to be relevant.

I suspect once an AGI is executing, the choice of source language is unimportant. I’ll go out on a limb and say executing:

select prompt_path from foo where bar;
stream file prompt_path “1234*”
stream file you_entered “”
say digits selected “”

will execute in effectively the same time regardless of source language. Waiting for Asterisk to play a file or for your database to return a row is beyond the scope of your AGI.

It’s what you do between your AGI and database calls that will determine how much your choice of source language will impact the total execution time.

Unless you’re doing a lot of stuff in between these API calls, the only place you can make an impact is getting your code into memory and ready to execute.

I ‘wrote’ 2 different AGIs in C, PHP, and Perl.

The first AGI, ‘null-agi’ reads the AGI environment variables from STDIN and exits. To me, this is the bare minimum a program can do and call itself an AGI. Each AGI was less than 10 lines.

The second AGI, ‘neutered-agi’ is an AGI of ‘production length’ (around 1,600 lines) and supporting access to a MySQL database. The AGI is of ‘production length’ but still exits after reading the AGI environment variables because we are measuring program startup time.

For both AGIs, the C implementation used an AGI library I developed way too many years ago. The PHP implementation used PHPAGI. The Perl implementation used Asterisk::AGI.

The C version of neutered-agi was based on a ‘voicemail-like’ AGI I wrote many years ago that stored the user credentials and messages in MySQL.

The PHP version of neutered-agi was based on dialparties.agi (nicked from PIAF). dialparties.agi is only about 800 lines long, so I ‘doubled it’ by copying and pasting it into the same source file. While dialparties.agi does not use MySQL, MySQL is available in PHP without including additional header or class files.

The Perl version of neutered-agi was based on agi-VDAD_ALL_outbound.agi (nicked from Vicidial).

I ran the tests in 3 different environments:

|- – - – - – - – - -+ – - – -+ – - – -+ – - – - -|
| CPU               | RAM    | CentOS | Asterisk |
| – - – - – - – - – + – - – -+ – - – -+ – - – - -|
| Geode 500MHz      | 256 MB |    4.9 |   1.2.37 |
| Atom D525 1.80GHz | 4 GB   |    5.6 |  1.8.4.1 |
| Xeon 3.40GHz      | 2 GB   |    4.8 |   1.2.40 |
| – - – - – - – - – + – - – -+ – - – -+ – - – - -|

No swapping occurred during the tests.

My dialplan executed each AGI 1,000 times to make the cumulative execution time more measurable. I wrote the dialplan in both ‘inline dialplan’ and an AEL ‘for’ loop. The initial execution times were the same so the test runs were made with the AEL version because it is more manageable. (5 lines versus 1,000 lines.)

Here’s the results for executing each AGI 1,000 times on each host in seconds:

Geode:

| – - – - -+- – - – - + – - – - – - -|
| language | null-agi | neutered-agi |
| – - – - -+ – - – - -+ – - – - – - -|
| C        |        6 |            6 |
| PHP      |      116 |          160 |
| Perl     |       99 |          639 |
| – - – - -+ – - – - -+ – - – - – - -|

Atom:

| – - – - -+ – - – - -+ – - – - – - -|
| language | null-agi | neutered-agi |
| – - – - -+ – - – - -+ – - – - – - -|
| C        |        6 |            6 |
| PHP      |       52 |           65 |
| Perl     |       38 |          197 |
| – - – - -+ – - – - -+ – - – - – - -|

Xeon:

| – - – - -+ – - – - -+ – - – - – - -|
| language | null-agi | neutered-agi |
| – - – - -+ – - – - -+ – - – - – - -|
| C        |        2 |            2 |
| PHP      |       40 |           47 |
| Perl     |       10 |          107 |
| – - – - -+ – - – - -+ – - – - – - -|

Summary:

Geode – Perl / C: 106
Atom – Perl / C: 33
Xeon – Perl / C: 54

The C null-agi AGI was statically linked. I didn’t have all the libraries needed to statically link neutered-agi on these boxes, but the dynamically linked versions of null-agi and neutered-agi took the same time to execute (16 seconds on the Geode) so I’m assuming statically linked versions of null-agi and neutered-agi would also take the same time to execute. It also helps support my original statement :)

I guessing the Perl version of neutered-agi took a big hit from having to load the database code as well as the AGI framework (use DBI; use Asterisk::AGI ;) while PHP only had to load the AGI framework (require_once “phpagi.php”;).

I’ll let you decide if the methodology is meaningful to your environment. I don’t consider myself to be a PHP or Perl expert, so if I’ve made some colossal blunder in my methodology, please let me know.

I’m guessing you’d have to resurrect a Soekris net4801 from the way-back-machine to substantiate my orignal claim of ‘hundreds.’ I’ll have to remind myself to say ‘dozens’ from now on.

(I don’t have a ‘thing’ against Soekris — I just bought 2 off Ebay to play with.)


Thanks in advance,
————————————————————————-
Steve Edwards       sedwards [at] sedwards [dot] com      Voice: +1-760-468-3867 PST
Newline                                              Fax: +1-760-731-3000