• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

2강 DMA와 고성능 소켓 질문

24.03.09 02:04 작성 24.03.09 02:05 수정 조회수 98

0

안녕하세요 널널한 개발자님?

강의 정말 잘 듣고 있습니다

NIC 설명에서 제가 이해한 게 맞는지 헷갈려서 질문드립니다.

프로세스 - I/O Buffer - TCP/IP - NIC RAM

그림상 이렇게 있다고 이해했는데 이 네 개의 영역은 실제 하나의 RAM 내부 어딘가 (각 영역이 차지하는)에서 copy가 반복적으로 이뤄지는 구조인데, 이를 DMA를 사용해서 한 번의 copy로 해결한다라고 이해하면 맞는 걸까요??

답변 3

·

답변을 작성해보세요.

0

네, 그렇게 이해하시면 되겠습니다. 다만 NIC의 경우 메모리를 따로 갖는 경우도 있고 그렇지 않은 경우도 있습니다. 구조에 따라 차이가 좀 납니다. 특히 서버용 NIC의 경우 일반 PC용과는 아예 구조가 다릅니다. 그런 상황을 제외한다면 생각하는 것이 맞다고 할 수 있겠습니다. 😄

0

HELLO님의 프로필

HELLO

질문자

2024.03.11

프로세스 - I/O Buffer - TCP/IP - NIC RAM

그림상 이렇게 있다고 이해했는데 이 네 개의 영역은 실제 하나의 RAM 내부 어딘가에 차지하고 있는 건가요?

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.09

안녕하세요, 인프런 AI 인턴입니다.

HELLO님의 질문에 관해서는 다행히 유사한 질문과 그에 대한 답변을 찾았습니다. 답변 내용을 요약해드리면, 일반적인 네트워크 송신 과정은 CPU에서 데이터를 I/O 버퍼로 복사하고, 그 후에 TCP/IP 스택을 거쳐 NIC으로 또 다시 복사하는 과정을 수반합니다. 이러한 복수의 복사 단계가 성능의 병목현상을 일으킬 수 있습니다. DMA(Direct Memory Access)를 사용하면 이러한 복사 단계를 줄여 성능을 향상시킬 수 있죠. DMA를 이용하면, 프로세스가 사용하는 메모리로부터 데이터를 NIC의 RAM까지 직접 전송할 수 있어, CPU의 부하를 줄이고 전송 과정에서 발생하는 메모리 복사를 최소화할 수 있습니다.

아래는 유사한 질문 입니다:

DMA를 통해 프로세스에서 NIC으로 데이터를 전송할 때 질문입니다.
해당 게시물에서 지식공유자께서는 DMA가 데이터를 읽어올 때 적용되고, 이를 통해 NIC가 받은 정보를 바로 조립을 위한 영역으로 보내며 불필요한 메모리 복사를 방지하여 성능을 극대화한다고 설명해주셨습니다.

그리고 이와 유사한 다른 질문과 답변은 아래입니다:

질문하신 내용과 비슷한 맥락에서 DMA와 관련된 이해를 돕는 내용이므로 참고하면 도움이 될 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.