커널쪽 질문입니다.

nayana의 이미지

리눅스 커널 2.4.x, 2.6.x 를 SMP 옵션을 사용하여 컴파일해서 실행할때 대부분의 NIC interrupt가 하나의 CPU에
할당이 됩니다.
물론 각각의 CPU에 interrupt 를 분산하기 위해서 irq balance를 사용하면 되지만
이런 경우 L2( 단지 예를 든것 뿐입니다. ) cache hit rate가 떨어져서 성능 저하의 원인이 됩니다.

또한 리눅스 커널에서 네트웍 패킷의 처리 과정은 NET_RX_SOFTIRQ 인 softirq 상태에서 처리가 됩니다.
softirq의 특징은 CPU가 여러개여도 softirq handler가 동일한 시간에 하나의 CPU에서만 실행되는 것을 보장하므로
동일한 시간에 네트웍 패킷은 하나의 CPU에서 한개만을 처리하게 됩니다.
이러한 특징은 물리적으로 CPU를 추가해도 네트웍 패킷 처리 성능을 향상 시킬수 없는 문제점을 발생 시킵니다.
이로 인하여 네트웍 패킷 처리시 성능 향상에 있어서 한계점을 드러내고 있습니다.

이에 대한 대안으로 검토 가능한 방법은 커널 스레드를 CPU 갯수만큼 생성해서 네트웍 패킷 처리 과정을 스레드에
의뢰 하는 경우 성능 향상을 볼수 있으나 이 방법은 리눅스 커널의 TCP/IP 스택 코드가 thread-safe 한지 검증이
안되어 있으므로 실현 가능한지 의문입니다.

지식적으로 틀린 부분이 있으면 말씀 주세요^^
아직 공부하고 있는지라!!!


* 해결 해야 할 과제
- 리눅스 커널의 softirq handler를 동시에 여러개의 CPU에서 실행이 가능한지?
- 아니면 이와 유사하게 동시 처리 할 수 있는 방안은 없는지?
- TCP/IP 스택 코드를 커널 스레드에서 실행이 가능한지?
- 리눅스 커널의 라우팅 기능의 성능 향상의 방안 없는지?

익명 사용자의 이미지

그게 불만이라면 irqbalance once를 해버리면 되죠... 그나저나 softnet이후 L2는 하드웨어 인터럽트이고 L3이후 프로세스는 소프트웨어 인터럽트라 동일한 시간에 cpu2개 이상에서 처리되는데요?

익명 사용자의 이미지

답변에 감사합니다.
2가지 질문을 드리겠습니다. 제가 아직 미천해서리^^;
1.softnet 일단 구체적으로 무엇인지요?
2. irqbalance를 선택하고 L2 cache hit rate가 떨어진 문제점이
Hardware interrupt라서 생기는 문제라는 말씀이신지요? 그러면
irqbalance를 선택하고 L3cache를 이용하면 문제가 없다는 문제인가요?

albamc의 이미지

음... NIC의 interrupt 처리가 분산되면

L2 Cache의 hit rate가 떨어진다는게 ...

어떻게 증명되지요? 제가 잘 모르겠어서 ... :?

^^*

익명 사용자의 이미지

실은 저도 어떻게 증명이 되고 있는지 모르고 있습니다.
단지 문서에 이렇게 적혀 있어서 그렇게 알고 있습니다.
L2 cache hit rate 성능이 떨어지는것을 확인하는 방법을
아시는 분은 알려주세요^^

nayana의 이미지

아직도 해결방안을 못찾고 있습니다.
고수님들의 조언 부탁드리겠습니다.
아니면 문서 or 책 or site 추천도 부탁드리겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.