Загрузка всех ядер
От: Аноним  
Дата: 25.02.11 07:30
Оценка: :)))
Вопрос №1. Когда выполняется любое .Net приложение (WPF, ASP.NET, WCF app) использует ли оно все ядра?
Вопрос №2. Одинаков ли подход для всех типов приложений при загрузке всех ядер процессоров?
Вопрос №3. Когда есть польза от загрузки всех ядер процессора? Вот например, AsParallel полезен ли?
А когда наоборот использование многоядерности хуже нежели отказ от этого?
Re[2]: Загрузка всех ядер
От: HowardLovekraft  
Дата: 25.02.11 10:35
Оценка: +1
Здравствуйте, me2, Вы писали:

me2>Как минимум полезно выполнять все операции вне UI Thread (дабы не подвешивать пользовательский интерфейс).

me2>При большом количестве потоков можно подвесить UI системы
Ересь какая-то.
Re: Загрузка всех ядер
От: Sinix  
Дата: 25.02.11 07:39
Оценка:
Здравствуйте, Аноним, Вы писали:

1. Иногда
2.
3. Иногда

*Как спорсили, так и ответил
Re: Загрузка всех ядер
От: Madruel  
Дата: 25.02.11 07:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вопрос №1. Когда выполняется любое .Net приложение (WPF, ASP.NET, WCF app) использует ли оно все ядра?

А>Вопрос №2. Одинаков ли подход для всех типов приложений при загрузке всех ядер процессоров?
А>Вопрос №3. Когда есть польза от загрузки всех ядер процессора? Вот например, AsParallel полезен ли?
А> А когда наоборот использование многоядерности хуже нежели отказ от этого?

1. Если приложение выполняется в одном потоке — больше одного ядра оно никак не использует. Если в нескольких — смотря как система распределит, другие процессы тоже требуют свой кусочеку процессорного времени.
2. ???
3. Например, при выполнении длительных вычислительных операций, если процессор больше ничем не загружен.
4. Когда тебе нафиг не нужна многопоточность и связанные с ней проблемы.
Re: Загрузка всех ядер
От: me2  
Дата: 25.02.11 10:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вопрос №1. Когда выполняется любое .Net приложение (WPF, ASP.NET, WCF app) использует ли оно все ядра?

А>Вопрос №2. Одинаков ли подход для всех типов приложений при загрузке всех ядер процессоров?
А>Вопрос №3. Когда есть польза от загрузки всех ядер процессора? Вот например, AsParallel полезен ли?
А> А когда наоборот использование многоядерности хуже нежели отказ от этого?

Как минимум полезно выполнять все операции вне UI Thread (дабы не подвешивать пользовательский интерфейс).

Не стоит так же забывать, что одно ядро в момент времени выполняет не более одной команды. При большом количестве
потоков можно подвесить UI системы (как в старые добрые времена одноядерных процессоров).
Re[2]: Загрузка всех ядер
От: Lloyd Россия  
Дата: 25.02.11 10:28
Оценка:
Здравствуйте, Madruel, Вы писали:

M>1. Если приложение выполняется в одном потоке — больше одного ядра оно никак не использует. Если в нескольких — смотря как система распределит, другие процессы тоже требуют свой кусочеку процессорного времени.


А как можно сделать .Net-приложение, которое "выполняется в одном потоке"?
Re[3]: Загрузка всех ядер
От: me2  
Дата: 25.02.11 10:33
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Madruel, Вы писали:


M>>1. Если приложение выполняется в одном потоке — больше одного ядра оно никак не использует. Если в нескольких — смотря как система распределит, другие процессы тоже требуют свой кусочеку процессорного времени.


L>А как можно сделать .Net-приложение, которое "выполняется в одном потоке"?


А разве они не все по-умолчанию однопоточные?
Re[4]: Загрузка всех ядер
От: Lloyd Россия  
Дата: 25.02.11 10:34
Оценка:
Здравствуйте, me2, Вы писали:

L>>А как можно сделать .Net-приложение, которое "выполняется в одном потоке"?


me2>А разве они не все по-умолчанию однопоточные?


Я тебе больше скажу, ты фик сделаешь их однопоточными.
Re[5]: Загрузка всех ядер
От: me2  
Дата: 25.02.11 10:38
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, me2, Вы писали:


L>>>А как можно сделать .Net-приложение, которое "выполняется в одном потоке"?


me2>>А разве они не все по-умолчанию однопоточные?


L>Я тебе больше скажу, ты фик сделаешь их однопоточными.


Ну если принебречь всякой там инфраструктурой (GC и проч.), то пользователю достается один поток (который UI) и если что-то в нем делать,
общая загрузка системы (при нулевой активности остальный приложений) будет (100 / колличество ядер). Что очень веселит, например, на 4х ядерном
процессоре, когда всего-то 25% занято...
Re[3]: Загрузка всех ядер
От: me2  
Дата: 25.02.11 10:40
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Здравствуйте, me2, Вы писали:


me2>>Как минимум полезно выполнять все операции вне UI Thread (дабы не подвешивать пользовательский интерфейс).

me2>>При большом количестве потоков можно подвесить UI системы
HL>Ересь какая-то.

Про подвешивание? На очень тяжелом алгоритме рендеринга в четыре потока наблюдалось общее подвисание системы.
Не факт, что этого нельзя избежать. Но если в лоб тупо распараллелить, получается такая картинка
Re[3]: Загрузка всех ядер
От: Madruel  
Дата: 25.02.11 10:57
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Madruel, Вы писали:


M>>1. Если приложение выполняется в одном потоке — больше одного ядра оно никак не использует. Если в нескольких — смотря как система распределит, другие процессы тоже требуют свой кусочеку процессорного времени.


L>А как можно сделать .Net-приложение, которое "выполняется в одном потоке"?


В строгом смысле, на сколько я знаю, нельзя. Я имел в виду приложение, в котором весь пользовательский код выполняется в одном потоке. И использование ядер для него же.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.