Hi Keith,
> Wiles, Keith <[email protected]> 於 2019年4月24日 下午10:38 寫道:
>
>
>
>> On Apr 24, 2019, at 9:22 AM, 曾懷恩 <[email protected] <mailto:[email protected]>> wrote:
>>
>> Hi Keith,
>>
>> I have tried DPDK 19.05-rc2, 19.02, 18.11 on VMware e1000 driver, Dell R630
>> with Mellanox Connectx-3 and Intel X520
>>
>> However I still got segmentation fault with all above setting
>
> So you are using the simple example and you get a invalid rte_malloc memory?
Yes
>
> I do not know how to debug this problem as it sounds like a race condition or
> memory corruption.
Do you mean that there is another process using this memory space?
As far as I know, while calling rte_malloc(), it will search a free memory
space and return the address.
>
> The simple example code is doing the right things to use that API, so if you
> are getting the same memory address returned then I would use GDB and set a
> hardware break point to try to see where this is going wrong. Not much help
> as I can not reproduce the problem.
thank you, I will try GDB later, btw, actually I got same memory address return
by rte_malloc().
>
> We know that DPDK works, what we need to find out is why it does not work in
> your platform. Try different size mallocs, but just shooting in the dark
> here. Now rte_malloc(2) of two bytes is a real waste of memory as the over
> head for a 2 byte request is very high.
So the rte_malloc() is not suggested to use?
I saw it’s a replacement of glibc malloc() in DPDK doc.
Or should I declare a larger size to make the memory space not to be fragmented?
Thanks a lot.
Best Regards,
>
>>
>> here are my settings :
>>
>> With CX3
>>
>> modprobe -a ib_uverbs mlx4_en mlx4_core mlx4_ib
>> /etc/init.d/openibd restart
>> ls -d /sys/class/net/*/device/infiniband_verbs/uverbs* | cut -d / -f 5
>> {
>> for intf in ens3 ens8;
>> do
>> (cd "/sys/class/net/${intf}/device/" && pwd -P);
>> done;
>> } |
>> sed -n 's,.*/\(.*\),-w \1,p'
>> mount -t hugetlbfs nodev /mnt/huge
>>
>> With X520 and e1000:
>>
>> mount -t hugetlbfs nodev /mnt/huge
>> modprobe uio
>> insmod dpdk-18.11/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
>> /root/dpdk-18.11//usertools/dpdk-devbind.py --bind=igb_uio 00:0a.0
>> /root/dpdk-18.11//usertools/dpdk-devbind.py --bind=igb_uio 00:08.0
>>
>> My OS is CentOS 7.5 in KVM with SRIOV enable
>>
>> hugepage size is set to 2MB
>>
>> Thanks for reply
>>
>> Best Regard,
>>
>>> 曾懷恩 <[email protected]> 於 2019年4月24日 上午1:34 寫道:
>>>
>>> Hi Keith,
>>>
>>> Yes I ran this program as root
>>>
>>> However I ran it with DPDK 18.11 release.
>>>
>>> I will try 19.05 later.
>>>
>>> Besides, my cpu is E5-2650 v4.
>>> NICs are Intel x520 DA2 and Mellanox connectx-3
>>>
>>> thank you for reply
>>>
>>> Best Regards,
>>>
>>>
>>>
>>>
>>>> Wiles, Keith <[email protected]> 於 2019年4月22日 下午9:09 寫道:
>>>>
>>>>
>>>>
>>>>> On Apr 22, 2019, at 1:43 AM, 曾懷恩 <[email protected]> wrote:
>>>>>
>>>>> Hi Wiles,
>>>>>
>>>>> here is my sample code with just doing rte_eal_init() and rte_malloc() .
>>>>>
>>>>>
>>>>>
>>>>
>>>> I tried the attached code and it works on my machine with something close
>>>> to DPDK 19.05 release.
>>>>
>>>> I only use 2 Meg pages, but I assumed it would not make any difference.
>>>>
>>>> Did you run this example as root?
>>>>>
>>>>> And my start eal cmdline option is ./build/test -l 0-1 -n 4
>>>>>
>>>>> Thank you very much for your reply
>>>>>> Wiles, Keith <[email protected]> 於 2019年4月21日 上午4:29 寫道:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Sent from my iPhone
>>>>>>
>>>>>>> On Apr 18, 2019, at 11:31 PM, 曾懷恩 <[email protected]> wrote:
>>>>>>>
>>>>>>> HI, Stephen,
>>>>>>>
>>>>>>> Yes, I set huge page in default_hugepagesz=1G hugepagesz=1G hugepages=4
>>>>>>>
>>>>>>> and also did rte_eal_init at the beginning of my program.
>>>>>>>
>>>>>>> thanks for reply.
>>>>>>
>>>>>> Is the core doing the rte_malloc one of the cores listed in the core
>>>>>> list on the command line. In other words the pthread doing the
>>>>>> allocation should be the master lcore or one of the slave lcores.
>>>>>>
>>>>>> Also I seems like a very simple test case, can you do the rte_eal_init()
>>>>>> and then do the allocation as your sample code looks and then exit? Does
>>>>>> this cause a segfault?
>>>>>>>
>>>>>>>
>>>>>>>> Stephen Hemminger <[email protected]> 於 2019年4月19日 上午10:59 寫道:
>>>>>>>>
>>>>>>>> On Fri, 19 Apr 2019 09:11:05 +0800
>>>>>>>> 曾懷恩 <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> i have 1 problem while using rte_malloc
>>>>>>>>>
>>>>>>>>> Every time I use this function and use the memory it returns, it
>>>>>>>>> shows segmentation fault(core dump)
>>>>>>>>>
>>>>>>>>> Is something wrong?
>>>>>>>>>
>>>>>>>>> thanks.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> rte init …
>>>>>>>>> ………...
>>>>>>>>> unsigned char *str1;
>>>>>>>>> printf("str1 addr = %x\n", str1);
>>>>>>>>> str1 = rte_malloc(NULL,2,RTE_CACHE_LINE_SIZE);
>>>>>>>>> printf("str1 addr = %x\n", str1);
>>>>>>>>> str1[0] = 'a’; //segmentation fault here
>>>>>>>>> str1[1] = '\0';
>>>>>>>> Do you have huge pages?
>>>>>>>> Did you do eal_init?
>>>>>>>
>>>>>
>>>>> <test.c><Makefile>
>>>>
>>>> Regards,
>>>> Keith
>>>>
>>
>
> Regards,
> Keith