spdk5 [SPDK/examples] nvme/hello_world 예제 수정 및 실행 spdk/examples/nvme/hello_world/hello_world.c 의 코드를 실행해보았다 spdk/build/examples 에 있는 실행 파일로 실행하면이런 결과 화면이 출력되는데 작동 흐름을 확인하기 위해 코드에 출력문을 추가해서 빌드해보겠다 내 필요에 맞게 수정한 후에 clean 한 후 다시 make 해주고 다시 build로 이동해서 파일을 실행하면성공 !!! 임시 테스트용 실행이기 때문에 세부적인 코드 흐름 분석은 blob- bdev 분석 후에 업로드할 예정이다 2024. 10. 10. [SPDK/examples] spdk/build/examples 하위 예제 파일 실행하기 spdk/build/examples 하위에는 실행 파일이 여러 가지 있다 실행 파일을 실행해볼 때 주의할 점이 있다공식 문서에서 나온대로 그냥 실행하려고 하면해당 파일이 디렉토리라고 뜬다 그래서 cd 로 이동해서 실행하려고 하면디렉토리가 아니라고 뜬다 뭐야!! 방금 디렉토리라면서 왜 아니라고 해...~ 이유는 권한 때문이다이렇게 sudo 권한으로 실행하면 문제 없이 작동한다 2024. 10. 10. [SPDK] spdk 빌드 및 example 실행 원하는 디렉토리에서 깃 클론을 받아준다 깃 클론 링크 순서로만 진행해도 되고 뒤에 경로를 명시해줘도 된다 현재 위치에서 spdk 클론을 받아주었으니현재 디렉토리에서 ls -l로 확인해보면 spdk가 생성되었다 명시한 디렉토리에 spdk 디렉토리로 클론이 완료되었다이동해서 내부를 살펴보면 다음 사진과 같다다만 아직 build를 안 한 상황이라 디렉토리 목록에 build 디렉토리가 없다 build 전에 필요한 종속성과 의존성 패키지 관련 설치들을 진행해준다 이건 서브 모듈을 초기화 해주는 것 dpdk가 필수적으로 필요한 spdk는사진처럼 셋업 쉘 스크립트를 실행해서 환경을 설정해야한다 반드시 해야하는 부분은 아니지만 SPDK FIO 플러그인도 함께 빌드하지 않도록 설정했다 이제 빌드를 진행한 후 m.. 2024. 10. 10. [SPDK] blobfs/blobstore layer에서의 read 작업 처리 0. examplesexamples 디렉토리에서 hello_blob과 hello_bdev를 통해 확인하려고 했으나 예제 작동만을 위해 hello를 포함하는 함수들이 많았고 물론 내부 구현은 실제 작동에 사용되는 함수들로 구현되어 있겠지만실제 작동에 잘 사용되지 않는 함수도 포함되어 있어 이해하기 쉽게 헤더 파일을 기반으로 코드를 확인했다1. blobfs.c1-1. spdk_file_read_async()아직 spdk도 익숙하지 않고 커널 코드 분석도 익숙하지 않아서 헤더를 보고 read 작업이 본격적으로 시작되는 지점일 것 같은 함수를 찾아서탐색을 시작했다 예상했던 지점보다 조금 더 먼저 시작하는 것 같아서 조금 더 이전 함수로 올라가서 내려가는 방식으로 확인했다 blobfs/blobstore layer.. 2024. 8. 27. [SPDK] spdk_bdev_read() 작동 방식 desc 블록 디바이스 디스크립터ch io 작업에 사용할 채널buf 데이터를 저장할 버퍼offset 오프셋nbytes 읽을 바이트 수 cb 완료하면 호출될 콜백 함수 사용자가 spdk_bdev_read 함수를 호출하면블록 디바이스 디스크립터에서 블록 디바이스 구조체를 가져오고바이트 단위 오프셋과 크기를 블록 단위로 바꾸고변환을 실패하면 오류를 반환하고변환을 성공하면 spdk_bdev_read_blocks를 호출하여 읽기를 진행한다 spdk_bdev_read_blocks는블록 단위로 데이터 읽는 함수이며spdk_bdev_read_blocks_with_md 를 리턴한다 spdk_bdev_read_blocks_with_md 는메타 데이터도 함께 읽을 수 있는 함수이다 spdk_bdev_read_blocks.. 2024. 8. 26. 이전 1 다음 728x90