constructor attribute http://phoxis.org/2011/04/27/c-language-constructors-and-destructors-with-gcc/
constructor attribute을 가진 함수는 main 함수를 실행하기 전에 호출한다.
예제 (출처)
#include <stdio.h> void begin (void) __attribute__((constructor)); void end (void) __attribute__((destructor)); int main (void) { printf ("\nInside main ()"); } void begin (void) { printf ("\nIn begin ()"); } void end (void) { printf ("\nIn end ()\n"); } 실행하면
In begin () Inside main () In end () DPDK DPDK의 경우 device driver들을 모두 constructor attirbute을 사용해서 main 함수 전에 호출되록 한다.
Introducing Python 을 판교어린이도서관에서 짧게 보고 적은 아이템들
python3 based
Decorator는 공부가 필요한 내용
sys.path : module 검색 경로 __init__.py 파일이 있으면 그 디렉토리를 PKG로 간주함
defaultdic()
Counters()
dicionary는 key의 순서를 보장하지 않음. OrderedDict()로 사전을 정의하면 가능 deque = stack + queue pprint()는 print보다 깔끔하게 출력한다고.
'\uXXX' 유니코드
%10.4s : 10칸의 공간. 문자열 중 4개만 출력
struct '>LL' : '>' Big endian, L : uint32_t
list comprehension : for loop보다 빠름.
SR-IOV and DPDK
Accelerating the NFV Data Plane : SR-IOV and DPDK… in my own words 를 읽고 요약
Before HW assisted Virtualisation SR-IOV 전까지는 VMM이 패킷 송수신에 매번 개입해야 했음.
1st interrupt from NIC to VMM 2nd interrupt from VMM to VM Intel VMDq Only one interrupt from NIC to VM as each VM has its own Rx queue.
SR-IOV SR-IOV : Standard IO memory Memory Management Unit from Intel(VT-d) and AMD(IOV) Virtual Function - Limited, lightweight, PCIe resource and a dedicated Tx/Rx packet queue Interrupt 부담이 없다고 하는데 왜?
pktmbuf_offload pool은 rte_pktmbuf_offload_pool_create()를 사용하여 생성 l2fwd_mbuf_ol_pool = rte_pktmbuf_offload_pool_create( "mbuf_offload_pool", NB_MBUF, 128, 0, rte_socket_id()); 할당은 rte_pktmbuf_offload_alloc()를 이용. rte_pktmbuf_offload_alloc(l2fwd_mbuf_ol_pool, RTE_PKTMBUF_OL_CRYPTO); mbuf 마다 하나씩 할당해서 crypto 연산에 사용 crypto 연산에 필요한 추가 옵션 등을 설정함. /* Append space for digest to end of packet */ ol->op.crypto.digest.data = (uint8_t *)rte_pktmbuf_append(m, cparams->digest_length); ol->op.crypto.digest.phys_addr = rte_pktmbuf_mtophys_offset(m, rte_pktmbuf_pkt_len(m) - cparams->digest_length); ol->op.crypto.digest.length = cparams->digest_length; ol->op.crypto.iv.data = cparams->iv_key.data; ol->op.crypto.iv.phys_addr = cparams->iv_key.phys_addr; ol->op.crypto.iv.length = cparams->iv_key.length; ol->op.crypto.data.to_cipher.offset = ipdata_offset; ol->op.crypto.data.to_cipher.length = data_len; ol->op.
2016.02.10 기준
DPDK-dump TRex - Realistic traffic generator
git-hub - trex-core, trex-doc, trex-profiles, trex-qt-gui Packet-journey git-hub FD.io Fast Data Path DPDK-nginx DPDK-pktgen DPDK-ODP TCP/IP stack for DPDK
우연히 tumblr를 보니 2013년에 적었던 답답한 현실이 지금도 똑같다는 사실에 놀랐다. 들으려고 하는 사람은 없고, 쓸데없는 일에 시간을 보내는 건 지금도 전혀 바뀐게 없어 보인다.
여전히 사용하라는 툴에서 제공하는 정보와 취합해 달라고 하는 정보가 다르다. 그럼 어떻게 하라는 건지? 툴을 고치던가, 툴의 정보를 원하는 정보로 바꾸는 기준을 제시해줘야 하는 거 아닌가? 내용은 관심없고, 그냥 결과만 달라고 하는. 자기가 그런 변환 작업을 한 적이 없으니 얼마나 귀찮은지 모르는 거다. 그리고 사람마다 다른 기준으로 정보를 취합해도 별 문제가 없다는 건 결국 별로 중요하지 않는 내용이라는 거다.
SCI 결과를 개선하기 위해 실질적으로 이뤄지는 노력이 안 보인다는 것. 노력한다해도 그건 관리자와 비관리자가 함께 노력해야 하는 일일텐데(관리자나 회사에 대한 불만이므로 그 불만 개선이 노력이 맞는 방향인지는 당연히 비관리지에게도 한께 논의되어야 한다) 그런 건 보기 어렵다.
문제 제기는 니들이 하지만 문제 해결은 나만 할 수 있다고 착각은 버려야 한다. 직원들이 불만에 대해 공감도 못하는데 어떻게 그 불만을 해결하기 위해 노력할 수 있겠나. 아니 공감을 하지 못하면 이해하기 위해 혹은 설득하기 위해 함께 이야기해야 하는데 그런 노력은 대부분 알아서 하란다.
출처 : 왜 “애자일”, 특히 스크럼이 끔찍한가
스크럼 팀에 실제 시니어 엔지니어의 역할은 없는데, 문제는 스크럼을 도입한 많은 회사에서 보통 전사적으로 시행한다는 것이다. 관리직으로 넘어가는 것 말고는, “스크럼 마스터”가 되어 이것을 말단에 도입하는 책임을 지는 선택지가 있다. 권한이 없는, 헛소리에 불과한 가짜 관리직 말이다. 스크럼 팀을 떠나서 해로운 마이크로매니지먼트를 받으면서 살지 않으려면 괴물 안으로 깊숙히 파고들어서 다른 사람에게 유해한 마이크로매니지먼트를 강요하는 수 밖에 없다. “애자일”과 스크럼이 나에게 말하는 것은 시니어 프로그래머는 반드시 필요하지 않다고 여겨지므로, 무시해도 좋으며, 마치 프로그래밍이란 35세 이전에 접어야 하는 유치한 것이라고 하는 것 같았다
http://click.pocoo.org/5/
C로 프로그램을 짤 때 사용할 표준 포맷도 이렇게 해야겠다.
$ python hello.py --help Usage: hello.py [OPTIONS] Simple program that greets NAME for a total of COUNT times. Options: --count INTEGER Number of greetings. --name TEXT The person to greet. --help Show this message and exit.
Download dpdk-2.2.0.tar.gz Refer http://dpdk.org/download
wget http://dpdk.org/browse/dpdk/snapshot/dpdk-2.2.0.tar.gz Download qat_mux Refer https://01.org/packet-processing/intel®-quickassist-technology-drivers-and-patches
wget https://01.org/sites/default/files/page/qatmux.l.2.5.0-80.tgz Getting Started Guide 문서도 받아 둔다.
wget https://01.org/sites/default/files/page/330750-004_qat_gsg.pdf Configure DPDK export RTE_SDK=/home/cychong/work/dpdk-2.2.0 export RTE_TARGET=x86_64-native-linuxapp-gcc make config T=$RTE_TARGET O=$RTE_TARGET make Configure QAT Ubuntu (14.04) 기준으로 몇 개 패키지를 설치해야 QAT를 빌드할 수 있는데 나름 기본적인 패키지들이라 그냥 설치해 놓으면 좋을 듯.
sudo apt-get install zlib1g-dev sudo apt-get install libssl-dev 적당한 위치에 풀면 되는데 ~/work/qat에 압축을 푼 경우를 기준으로 정리