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

Reply via email to