Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libclang 필요하다고 명시해야함 #20

Closed
jeehoonkang opened this issue May 22, 2020 · 13 comments
Closed

libclang 필요하다고 명시해야함 #20

jeehoonkang opened this issue May 22, 2020 · 13 comments

Comments

@jeehoonkang
Copy link
Contributor

되도록 Ubuntu/Centos에서 설치하는 방법도..

@jeehoonkang
Copy link
Contributor Author

.. and libnuma

@jeehoonkang
Copy link
Contributor Author

그리고 다음을 사용자가 굳이 설정하지 않아도 컴파일 되는 방법을 찾으면 좋겠습니다.

export RUSTFLAGS="-C link-arg=-L/home/jeehoonkang/Works/rust-dpdk/target/debug/build/rust-dpdk-sys-cd70b13e628fe826/out/3rdparty/dpdk/build/lib -C link-arg=-Wl,--whole-archive -C link-arg=-lrte_kvargs -C link-arg=-Wl,--no-whole-archive -C link-arg=-lnuma -C link-arg=-lm -C link-arg=-lc

@jeehoonkang
Copy link
Contributor Author

그리고 위 사항을 해야한다는 사실은 README에 적혀있어야 합니다.

@jeehoonkang
Copy link
Contributor Author

여기 보니 rustflags cargo.toml에서 지정하는 방법이 있네요 https://doc.rust-lang.org/cargo/reference/config.html

@jeehoonkang
Copy link
Contributor Author

@leeopop 제 워크플로우에서는 RUSTFLAGS 설정해야하는 사실이 크게 방해됩니다. IDE에서 자주 자동으로 cargo build를 수행하기도 하고 저도 CLI가 아니라 IDE 내에서 cargo build를 해서요.

이 이슈를 먼저 해결해주시길 부탁드립니다. 일반적으로, 지금 단계에서는 더 많은 기능이나 최적화보다 협업이 쉬운 방향으로 만들고 진화해야한다고 생각합니다. 여의치 않으면 다른 사람들이 만든 rust-dpdk를 쓰는게 더 나을 수도 있겠습니다.

@jeehoonkang
Copy link
Contributor Author

Cargo.toml에 rustflags지정하는건 왜 안되나요? 된다면 제 모든 작업환경에서 rustflags env variable 안넣어도 될거같아서요.

@leeopop
Copy link
Contributor

leeopop commented May 23, 2020

@jeehoonkang rust-dpdk에서 넣어도 FPS에서 rust-dpdk를 의존했을 때 FPS의 Rustflag에 안들어갔던걸로 기억합니다. 혹시 모르니 다시 한번 시도해보겠습니다.

@leeopop
Copy link
Contributor

leeopop commented May 23, 2020

cargo 측에 제안한 issue 입니다.
rust-lang/cargo#7586

@leeopop
Copy link
Contributor

leeopop commented May 23, 2020

저도 이부분은 정말 마음에 안 드는 부분이라 일단 시간을 내서 다른 방법이 없나 살펴보고 있습니다.

  1. cargo 에서 rustflags 지정하는 경우에는 -l, -L 옵션만 지정 가능합니다.
    https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-flagsflags

@leeopop
Copy link
Contributor

leeopop commented May 23, 2020

기존 구현체로 실행했을때의 로그입니다.

["target/debug/dpdk_sys_test"]
EAL: Detected 48 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:01:00.0 on NUMA socket 0
EAL:   probe driver: 8086:1528 net_ixgbe
EAL: PCI device 0000:01:00.1 on NUMA socket 0
EAL:   probe driver: 8086:1528 net_ixgbe
EAL: PCI device 0000:03:00.0 on NUMA socket 0
EAL:   probe driver: 8086:1583 net_i40e
i40e_GLQF_reg_init(): i40e device 0000:03:00.0 changed global register [0x002689a0]. original: 0x00000000, new: 0x00000029 
i40e_GLQF_reg_init(): i40e device 0000:03:00.0 changed global register [0x00268ca4]. original: 0x00001840, new: 0x00009420 
EAL: PCI device 0000:03:00.1 on NUMA socket 0
EAL:   probe driver: 8086:1583 net_i40e
EAL: PCI device 0000:81:00.0 on NUMA socket 1
EAL:   probe driver: 8086:1583 net_i40e
i40e_GLQF_reg_init(): i40e device 0000:81:00.0 changed global register [0x002689a0]. original: 0x00000000, new: 0x00000029 
i40e_GLQF_reg_init(): i40e device 0000:81:00.0 changed global register [0x00268ca4]. original: 0x00001840, new: 0x00009420 
EAL: PCI device 0000:81:00.1 on NUMA socket 1
EAL:   probe driver: 8086:1583 net_i40e
["af_packet", "ark", "atlantic", "avp", "axgbe", "bbdev_fpga_lte_fec", "bbdev_null", "bbdev_turbo_sw", "bnxt", "bond", "caam_jr", "crypto_scheduler", "cxgbe", "dpaa", "dpaa2", "dpaa2_event", "dpaa2_sec", "dpaa_event", "dpaa_sec", "dsw_event", "e1000", "ena", "enetc", "enic", "failsafe", "fm10k", "hinic", "hns3", "i40e", "iavf", "ice", "ifc", "ionic", "ixgbe", "kni", "lio", "memif", "netvsc", "nfp", "nitrox", "null", "null_crypto", "octeontx", "octeontx2", "octeontx2_crypto", "octeontx2_event", "octeontx_crypto", "octeontx_ssovf", "octeontx_zip", "opdl_event", "qat", "qede", "ring", "sfc_efx", "skeleton_event", "softnic", "sw_event", "tap", "thunderx_nicvf", "vdev_netvsc", "vhost", "virtio", "virtio_crypto", "vmxnet3_uio"]

net_i40e 드라이버가 로드되어 정상 인식이 됩니다.

@leeopop
Copy link
Contributor

leeopop commented May 23, 2020

반면에 cargo link 옵션으로 -ldpdk 만을 주면 다음과 같이 됩니다.

EAL: Detected 48 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
["af_packet", "ark", "atlantic", "avp", "axgbe", "bbdev_fpga_lte_fec", "bbdev_null", "bbdev_turbo_sw", "bnxt", "bond", "caam_jr", "crypto_scheduler", "cxgbe", "dpaa", "dpaa2", "dpaa2_event", "dpaa2_sec", "dpaa_event", "dpaa_sec", "dsw_event", "e1000", "ena", "enetc", "enic", "failsafe", "fm10k", "hinic", "hns3", "i40e", "iavf", "ice", "ifc", "ionic", "ixgbe", "kni", "lio", "memif", "netvsc", "nfp", "nitrox", "null", "null_crypto", "octeontx", "octeontx2", "octeontx2_crypto", "octeontx2_event", "octeontx_crypto", "octeontx_ssovf", "octeontx_zip", "opdl_event", "qat", "qede", "ring", "sfc_efx", "skeleton_event", "softnic", "sw_event", "tap", "thunderx_nicvf", "vdev_netvsc", "vhost", "virtio", "virtio_crypto", "vmxnet3_uio"]

@leeopop
Copy link
Contributor

leeopop commented May 23, 2020

@leeopop
Copy link
Contributor

leeopop commented May 25, 2020

Resolved by #25

@leeopop leeopop closed this as completed May 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants