[SR-Users] Why these 2 items in the same entry for a htable
Ginhoux, Patrick
patrick.ginhoux at fr.unisys.com
Tue Apr 4 14:11:31 CEST 2017
Hi,
Thanks for the link I’ll take a lot more later.
Now a quick look seems funny :
Ideally, the hash function will assign each key to a unique bucket, but most hash table designs employ an imperfect hash function, which might cause hash collisions <https://en.wikipedia.org/wiki/Collision_(computer_science)> where the hash function generates the same index for more than one key. Such collisions must be accommodated in some way.
If I understand well, this is typically the case I have. Am I correct ?
Cordialement
Patrick GINHOUX
De : sr-users [mailto:sr-users-bounces at lists.sip-router.org] De la part de Daniel-Constantin Mierla
Envoyé : mardi 4 avril 2017 12:45
À : Kamailio (SER) - Users Mailing List <sr-users at lists.sip-router.org>
Objet : Re: [SR-Users] Why these 2 items in the same entry for a htable
Hello,
if you are not familiar with hash table structure, take a bit of time to read about it, a good article on wikipedia:
- https://en.wikipedia.org/wiki/Hash_table
The dump prints only details of the slots (buckets) that have data on it (size>0). The entry field in the dump content is practically the index of the slot.
I hope it helps!
Cheers,
Daniel
On 04.04.17 08:49, Ginhoux, Patrick wrote:
Hi,
While working on the project to migrate my kamailio.cfg script from kamailio 3.3.1 to 5.0.x, I discovered that in there are 2 items in the same htable.
Below the figure that illustrate this case :
1) Content of the MBXRANGE table :
mysql> select * from mbxrange;
+-----+-------------+-------------------------------------------------+------------+----------+
| id | key_name | key_value | value_type | key_type |
+-----+-------------+-------------------------------------------------+------------+----------+
| 0 | VERSION | 120104-173400 | 0 | 0 |
| 101 | 1 | min=0100000000;max=0199999999;node=OPMVTS1VSE02 | 0 | 0 |
| 102 | 2 | min=0200000000;max=0299999999;node=OPMVTS1VSE02 | 0 | 0 |
| 103 | 3 | min=0300000000;max=0399999999;node=OPMVTS1VSE02 | 0 | 0 |
| 104 | 4 | min=0400000000;max=0499999999;node=OPMVTS1VSE02 | 0 | 0 |
| 105 | 5 | min=0500000000;max=0599999999;node=OPMVTS1VSE02 | 0 | 0 |
| 106 | 6 | min=0600000000;max=0699999999;node=OPMVTS1VSE02 | 0 | 0 |
| 107 | 7 | min=0700000000;max=0799999999;node=OPMVTS1VSE02 | 0 | 0 |
| 108 | 8 | min=0800000000;max=0899999999;node=OPMVTS1VSE02 | 0 | 0 |
| 109 | 9 | min=0900000000;max=0999999999;node=OPMVTS1VSE02 | 0 | 0 |
| 199 | maxmbxrange | 9 | 0 | 0 |
+-----+-------------+-------------------------------------------------+------------+----------+
11 rows in set (0.00 sec)
2) modparam instruction used in my kamailio.cfg script:
modparam("htable", "htable", "mbxrangeHash=>size=4;dbtable=mbxrange;")
3) Result of « kamctl fifo sht_dump mbxrangeHash » command with kamailio version 3.3.x:
[root at op52is4router1 ~]# kamctl fifo sht_dump mbxrangeHash
Entry:: 0
6:: min=0600000000;max=0699999999;node=OPMVTS1VSE02
Entry:: 1
7:: min=0700000000;max=0799999999;node=OPMVTS1VSE02
Entry:: 2
4:: min=0400000000;max=0499999999;node=OPMVTS1VSE02
Entry:: 3
5:: min=0500000000;max=0599999999;node=OPMVTS1VSE02
Entry:: 4
2:: min=0200000000;max=0299999999;node=OPMVTS1VSE02
Entry:: 5
3:: min=0300000000;max=0399999999;node=OPMVTS1VSE02
VERSION:: 120104-173400
Entry:: 6
maxmbxrange:: 9
Entry:: 7
1:: min=0100000000;max=0199999999;node=OPMVTS1VSE02
Entry:: 14
9:: min=0900000000;max=0999999999;node=OPMVTS1VSE02
Entry:: 15
8:: min=0800000000;max=0899999999;node=OPMVTS1VSE02
Result of « kamcmd htable.dump mbxrangeHash » command with kamailio version 5.0.x :
[root at vm-vse02-siprouter1 ~]# kamcmd htable.dump mbxrangeHash
{
entry: 0
size: 1
slot: {
item: {
name: 6
value: min=0600000000;max=0699999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 1
size: 1
slot: {
item: {
name: 7
value: min=0700000000;max=0799999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 2
size: 1
slot: {
item: {
name: 4
value: min=0400000000;max=0499999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 3
size: 1
slot: {
item: {
name: 5
value: min=0500000000;max=0599999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 4
size: 1
slot: {
item: {
name: 2
value: min=0200000000;max=0299999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 5
size: 2
slot: {
item: {
name: 3
value: min=0300000000;max=0399999999;node=OPMMMS1VSE02
type: str
}
item: {
name: VERSION
value: 120104-173400
type: str
}
}
}
{
entry: 6
size: 1
slot: {
item: {
name: maxmbxrange
value: 9
type: str
}
}
}
{
entry: 7
size: 1
slot: {
item: {
name: 1
value: min=0100000000;max=0199999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 14
size: 1
slot: {
item: {
name: 9
value: min=0900000000;max=0999999999;node=OPMMMS1VSE02
type: str
}
}
}
{
entry: 15
size: 1
slot: {
item: {
name: 8
value: min=0800000000;max=0899999999;node=OPMMMS1VSE02
type: str
}
}
}
So, I can see :
- The entry number is not incremental 1 by 1 ; there are entry #1 to #7, then #14 and #15 (all have size=1)
- For the entry #5, its size is of 2 and it contains 2 items
I don’t say here that this is a problem, but the way the htable is loaded seems strange to me.
So if there people who can explain me if what I see is normal or not, and how the htable load process works, I would appreciate.
Thanks in advance.
Cordialement
Patrick GINHOUX
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla
www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
Kamailio Advanced Training - May 22-24 (USA) - www.asipto.com <http://www.asipto.com>
Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20170404/7966352c/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 7886 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20170404/7966352c/attachment.bin>
More information about the sr-users
mailing list