Hello Juha. Thanks for your help. The script works fine. We made a test using the values "20 20 20 20 10 10" and it gave us the exact values that I calculated for the actual gateways.
Device Calls % GW02 520 1,04 GW03 502 1,01 GW05 12148 24,44 GW06 12276 24,70 GW09 12174 24,49 GW10 12074 24,29
Total 49694
So, we created another "weight" values and gave us the percentage we were looking for.
18 18 18 18 16 16
That gaves us 20% 20% 20% 20% 10% and 10%.
So, we think it should be very useful if you can include this script in the "utils", and maybe give more information in the REDME file of LCR about the weight "column", until now we believe this column represents the percentage of each gateway.
Thanks again,
Regards, Ricardo.-
-----Mensaje original----- De: Juha Heinanen [mailto:jh@tutpro.com] Enviado el: domingo, 26 de septiembre de 2010 2:03 Para: Ricardo Martinez; users@lists.kamailio.org Asunto: Re: [SR-Users] LCR "weight" column question
ricardo,
i studied the weight problem a bit more and came to the conclusion that implementing a fair weighting algorithm would be too complicated.
below is a script that can be used to find weight values matching desired probabilities for lcr gateways. i don't know if it would be appropriate to include it in utils or scripts directory.
-- juha
#!/usr/bin/php <?php
// This script can be used to find out actual probabilities // that correspond to a list of LCR gateway weights.
if ($argc < 2) { echo "Usage: lcr_weight_test.php <list of weights (integers 1-254)>\n"; exit; }
$iters = 10000;
$rands = array(); for ($i = 1; $i <= $iters; $i++) { $elem = array(); for ($j = 1; $j < $argc; $j++) { $elem["$j"] = $argv[$j] * (rand() >> 8); } $rands[] = $elem; }
$sorted = array(); foreach ($rands as $rand) { asort($rand); $sorted[] = $rand; }
$counts = array(); for ($j = 1; $j < $argc; $j++) { $counts["$j"] = 0; }
foreach ($sorted as $rand) { end($rand); $counts[key($rand)]++; }
for ($j = 1; $j < $argc; $j++) { echo "weight " . $argv[$j] . " probability " . $counts["$j"]/$iters . "\n"; }
?>