Sammit92
Если чисто по русски ответить то хер его знает :D
Многопоточность srcds на linux
Sammit92, поясню как смотрится в лине и в винде.
В лине:
1. Нагрузка смотрится командами top, atop и htop
Чтобы посмотреть нагрузку по ядрам, после top надо нажать "1", но выводится не мгновенное значение, а среднее за 5 и более секунд, поэтому если за это время поток перескочил с ядра на ядро - то может вывести что ядра загружены равномерно.
2. Напротив процесса в списке процессов выводится нагрузка. Максимальная загрузка процессора равняется 100%*N, где N - количество ядер. Соответственно если приложение однопоточное, или система одноядерная - максимальное значение - 100%.
Если приложение многопоточное и система многоядерная, максимальное значение загрузки напротив процесса приложения равна min(100%*N,100%*K), где K - кол-во потоков приложения. Т.е. если процессор 4-х ядерный, а приложение 2-х поточное, то максимум, который Вы можете увидеть напротив процесса такого приложения - 200%.
То, что вы привели, не доказывает наличие многопоточности, т.к. число не привысило 100%.
В винде:
1. В отличае от линя за 100% принимается полная загрузка всех ядер. Таким образом для однопоточного приложения полная загрузка будет 100%/N.
Например на 4-х ядерном процессоре 25%, на 2-х ядерном 50%. Если эти цифры выше - приложение многопоточное.
Для многопоточного приложения, если кол-во потоков >= количеству ядер - максимальная загрузка процессора будет 100%.
Вальва вывела несколько функций в отдельные потоки, но они едвали загружают проц на 1%. Большую часть времени эти потоки простаивают. И хоть это нельзя назвать многопоточностью, т.к. основная вычислительная нагрузка не распределяется по ядрам, вальва всетаки сделала такое заявление... наверно чтобы народ заткнулся.
В саппорте, как я написал в другой теме, подтвердили что многопоточности нет.
В лине:
1. Нагрузка смотрится командами top, atop и htop
Чтобы посмотреть нагрузку по ядрам, после top надо нажать "1", но выводится не мгновенное значение, а среднее за 5 и более секунд, поэтому если за это время поток перескочил с ядра на ядро - то может вывести что ядра загружены равномерно.
2. Напротив процесса в списке процессов выводится нагрузка. Максимальная загрузка процессора равняется 100%*N, где N - количество ядер. Соответственно если приложение однопоточное, или система одноядерная - максимальное значение - 100%.
Если приложение многопоточное и система многоядерная, максимальное значение загрузки напротив процесса приложения равна min(100%*N,100%*K), где K - кол-во потоков приложения. Т.е. если процессор 4-х ядерный, а приложение 2-х поточное, то максимум, который Вы можете увидеть напротив процесса такого приложения - 200%.
То, что вы привели, не доказывает наличие многопоточности, т.к. число не привысило 100%.
В винде:
1. В отличае от линя за 100% принимается полная загрузка всех ядер. Таким образом для однопоточного приложения полная загрузка будет 100%/N.
Например на 4-х ядерном процессоре 25%, на 2-х ядерном 50%. Если эти цифры выше - приложение многопоточное.
Для многопоточного приложения, если кол-во потоков >= количеству ядер - максимальная загрузка процессора будет 100%.
Вальва вывела несколько функций в отдельные потоки, но они едвали загружают проц на 1%. Большую часть времени эти потоки простаивают. И хоть это нельзя назвать многопоточностью, т.к. основная вычислительная нагрузка не распределяется по ядрам, вальва всетаки сделала такое заявление... наверно чтобы народ заткнулся.
В саппорте, как я написал в другой теме, подтвердили что многопоточности нет.
-
- Сержант
- Сообщения: 59
- Зарегистрирован: 20.10.2008
- Откуда: Норильск
У меня при загрузке одного ядра на 100% перекидывал на другой, тем самым был виден лаг при большом кол-ве игроков. Но, что-то похожее на многопоточность я не видел, принудительно заставил работать сервера на своих ядрах.
rodgerland, а сервер можно заставить работать непринудительно? или вообще не заставлять?
Я к примеру просто запускаю и он работает. Как ему приказать? Отхлестать? Или подать на корпус компа разряд напряжением в несколько тысяч вольт?
А если серьезно, Вы не в теме, заставить работать однопоточное приложение в несколько потоков нельзя. И вообще заставлять приложения нельзя, они не живые. Их можно запустить с определенными параметрами.
Я к примеру просто запускаю и он работает. Как ему приказать? Отхлестать? Или подать на корпус компа разряд напряжением в несколько тысяч вольт?
А если серьезно, Вы не в теме, заставить работать однопоточное приложение в несколько потоков нельзя. И вообще заставлять приложения нельзя, они не живые. Их можно запустить с определенными параметрами.
-
- Капитан
- Сообщения: 338
- Зарегистрирован: 15.09.2011
- Благодарил (а): 9 раз
- Поблагодарили: 5 раз
Тема очень старая, но всё же решил приподнять :)
Всё таки есть многопоточность в linux, и это я сегодня увидел.
ДМ на 64 слота работает на 4 ядре, смотрю htop при 61 человеке на сервере. 4 ядро загружено на 100% и 5 на 15%
исходя что на 5 ядре ничего не работает. Значит есть многопоточность в linux. Как только получится сделать скрин, сразу выложу!
Всё таки есть многопоточность в linux, и это я сегодня увидел.
ДМ на 64 слота работает на 4 ядре, смотрю htop при 61 человеке на сервере. 4 ядро загружено на 100% и 5 на 15%
исходя что на 5 ядре ничего не работает. Значит есть многопоточность в linux. Как только получится сделать скрин, сразу выложу!
Да, формальная есть, мелкие задачи вальва вынесла в отдельные потоки. Но в реальности её (многопоточности) нет, т.к. вычисление основной задачи - просчета физики, не распределено. Т.е. сам сервер работает в один поток, а отдельные плюшки у него работают в отдельных от него потоках.