리눅스에서 쓰레드를 SCHED_FIFO로 설정하면 이 쓰레드에게 최우선으로 cpu가 할당되나요?

phyljh의 이미지

리눅스 스케쥴링 관련하여 궁금한게 있어 질문드립니다.


리눅스에서 디폴트 스케쥴링 정책은 그냥 라운드로빈 방식(SCHED_OTHER)으로 알고 있습니다.

그리고 그 방식위에서 우선순위를 높이거나 줄이려면 nice 값을 낮추거나 높이면 되는걸로 알고 있습니다.

그런데 제가 쓰레드를 여러개 만들어서 돌릴때 각각의 쓰레드의 스케쥴링 정책을 예를 들어 pthread_setschedparam 함수를 사용하여 SCHED_FIFO에 우선순위를 49로 주었다 치면 htop으로 해당 프로세스 확인시 PRI 는 -50으로 나오고 NI는 0으로 나옵니다.

제가 헷갈리는 것은 다른 여러 프로세스들은 디폴트스케쥴링인 SCHED_OTHER로 동작하는데 특정 프로세스와 쓰레드들만 SCHED_FIFIO로 하는게 가능한것인지.....그렇다면 리눅스커널스케쥴러는 다른 프로세스나 스레드는 RR로 돌리면서 SCHED_FIFO로 세팅한 프로세스와 스레드는 최우선적으로 cpu할당하는것인지 문의드립니다.

라스코니의 이미지

제가 헷갈리는 것은 다른 여러 프로세스들은 디폴트스케쥴링인 SCHED_OTHER로 동작하는데 특정 프로세스와 쓰레드들만 SCHED_FIFIO로 하는게 가능한것인지 ==> 가능합니다. 위에 하신 것을 보니 잘 변환된 것으로 보입니다. 일반 유저 프로세스에서 실시간 (FIFO 또는 Priority) 프로세스로 변경된 겁니다.

그렇다면 리눅스커널스케쥴러는 다른 프로세스나 스레드는 RR로 돌리면서 SCHED_FIFO로 세팅한 프로세스와 스레드는 최우선적으로 cpu할당하는것인지 문의드립니다 ==> 맞습니다. 최우선적으로 돌리는 것은 아니고, 유저가 설정한 PRI와 NI 값을 따르되 시스템에서 허용하는 한도에 맞게 자원을 할당해 줍니다.

너무 높게 설정하면 시스템이 죽거나 먹통됩니다. 소프트웨어 초기 개발시 흔히 발생하고 죽일수도 없어 리부팅하는 일이 허다합니다. 그냥 linux CFS(Complelety Fair Scheduler)가 가장 좋습니다. 잘못 돌아갈 때 죽이기도 좋고 디버그도 좋거든요.

phyljh의 이미지

답변감사합니다. 많은 도움 되었습니다^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.