The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Метод невидимой монополизации CPU пользовательским приложением

13.07.2007 15:15

В документе "Secretly Monopolizing the CPU Without Superuser Privileges" описан способ создания приложения на 100% утилизирующего процессорные ресурсы, будучи запущенным с привилегиями обычного пользователя.

Изюминка метода - полная загрузка CPU в некоторых ситуациях не прослеживается стандартными утилитами мониторинга, например, в top перегрузка не видна.

Проблеме подвержены планировщики задач Linux, Windows, Solaris, FreeBSD. Исключение составляет Mac OS X и планировщик CFS который появится в 2.6.23 Linux ядре.

  1. Главная ссылка к новости (http://it.slashdot.org/article...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/11404-cpu
Ключевые слова: cpu, scheduler, security
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (10) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, moo (?), 00:02, 14/07/2007 [ответить]  
  • +/
    Планировшики тут не при чём, все выше перечисленные
    операционные системы/ядра (за исключением может быть
    Solaris) собирают информацию по учёту времени не
    корректно, и как следствие возможны подвохи.

    Documentation/cpu-load.txt

     
     
  • 2.2, vp (?), 22:51, 14/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Я чего-то недопонял. Ведь планировщик же потом учитывая эту информацию совершает определённые действия: например изменяет приоритет. Ведь на этом же игра идёт. Что потом будет иметь высокий приоритет и ему каждый тик будут передавать управление.
    moo, что ты имел ввиду?
     
     
  • 3.3, moo (?), 00:42, 15/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Планировшик Линукса эту информацию не использует вообще, она
    хранится исключительно ради того чтобы ктото мог её прочитать
    (через /proc например). Что делает Windows, Solaris, MacOSX я не
    знаю.

    http://lkml.org/lkml/2007/2/13/314

     
     
  • 4.5, Keks 007 (?), 05:39, 15/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Планировшик Линукса эту информацию не использует вообще, она
    >хранится исключительно ради того чтобы ктото мог её прочитать
    Эээ, типа, предлагаете предоставить системе самой решать какой приоритет у каких задач должен быть?Круто, тогда следующим шагом надо еще научить систему обходиться без юзера - да здравствуют терминаторы, слава роботам :)
     
     
  • 5.6, Antrew (??), 04:56, 16/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    кекс, запусти top и обрати внимание что есть nice level, а есть priority
     
     
  • 6.9, Кекс07 (?), 11:13, 17/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >кекс, запусти top и обрати внимание что есть nice level, а есть
    >priority
    Секунду, а что, сегодня система уже всегда за меня решает какой приоритет кому выдать правильнее?Чего-то я не заметил - если мне надо, могу сам указать, вроде.Меня где-то на__али? :)


     
     
  • 7.10, Аноним (-), 21:57, 17/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    мдя полное отсутствие знаний мат части
     
  • 2.4, MiG (?), 01:20, 15/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Так это тоже задача планировщика - правильно учесть время отработанное потоком. :)
     

  • 1.7, AMDmi3 (??), 16:32, 16/07/2007 [ответить]  
  • +/
    Хм, работает, притом отлично. Одна и та-же задача просто в цикле и с описанным способом с отжиранием 0.9 тика:

    time ./plain
    2.53user 0.00system 0:02.55elapsed 99%CPU
    time ./cheat
    0.04user 0.00system 0:04.96elapsed 0%CPU

    Ubuntu шестая, Core 2 duo.

    Как видно, оверхед много больше 10%. Учитывая, что вычисления у меня на каждой итерации явно много тяжелее rdtsc, вычитания и сравнения, дело таки в шедулере. Видимо следующий тик мой процесс таки пропускает. Как бы то ни было, пора сваливать с виртуального хостинга :)

     
     
  • 2.8, AMDmi3 (??), 16:51, 16/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А, не, туплю. Приличное время еще занимает cycles_per_tick(). Т.е. оверхед таки невелик.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру