Фиберы, мять их

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Фиберы, мять их

Сообщение tyomitch » 02.01.2007 (Вт) 15:05

Вздумалось мне написать свой шедулер. На фиберах.
Пока что я у стандартного виндового проигрываю раза в два. Причём чем больше модных наворотов накручиваю на свой, тем сильнее проигрываю.
По теории, выигрыш достижим, ибо нету переходов в ядро.

Прошу помощи.
1) Что почитать про написание шедулеров? Желательно электронное.
2) Действительно ли выигрыш достижим, или я впустую дурью маюсь? (Теория требудет для выигрыша многопроцессорную платформу; я же обладаю одним P4 HT, хотя два фибера действительно работают одновременно -- проверено.)
Последний раз редактировалось tyomitch 03.01.2007 (Ср) 0:42, всего редактировалось 1 раз.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.01.2007 (Вт) 22:13

Почитав умные вещи, удалось существенно обогнать стандартный шедулер.
Поглядите: в архиве исходники на делфи, бинарники и мои логи.
У вас нет доступа для просмотра вложений в этом сообщении.
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.01.2007 (Вт) 23:06

Смени название топика на более приличное, Артем :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.01.2007 (Ср) 0:43

fixed :-)
внутрь-то глядел?
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.01.2007 (Ср) 5:55

fixed = lol! :lol:

Скачал архив. Открыл. Ужаснулся, закрыл архив :lol:
Если серьезно - у меня сейчас Дельфи не установлен. К вечеру установлю и загляну обязательно.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.01.2007 (Ср) 20:52

У исправленного заголовка, к слову, есть глубокий исторический контекст:
«Язык компьютера», Мир, 1989 писал(а):...Члены клуба даже создали собственный словарь. Например, о вышедшем из строя оборудовании они говорили, что его следует «разминать», пока оно не исправится. Проект, не имеющий видимого практического значения и выполняемый исключительно ради удовольствия от самого процесса работы, назывался (как и грубоватые шуточки) «хэк» (hack). Естественно, те, кто занимался подобными проектами, стали называться хэкерами.


Касательно самого кода: если успею, переведу его на VB.net, припишу комментарии и пошлю gaidar-у как статью :-)
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.01.2007 (Ср) 21:56

Заглянул. Интересно, спасибо.
1. Виндовый шедулер - это тот, который "Назначенные задания"?
2. В проекте измеряется время между посылкой и приемом квитанции? Как сие сравнивалось с виндовым шедулером?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.01.2007 (Ср) 22:04

1. Нет. Который потоки шедулит.
2. Нет. Между посылкой запроса и приёмом ответа. Обработка запроса занимает до 30 секунд. Сравнивались варианты "по потоку на запрос" (со стандартным шедулингом) и "по фиберу на запрос" (с ручным шедулингом).
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.01.2007 (Ср) 22:36

1. Ага, все, я понял.
2. См. 1

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 1:17

При переводе на .net возникла неожиданная проблема: я не знаю, как передать сокет (System.Net.Sockets.Socket) в CreateFiber в качестве lParam. Гуры, помогите:!:
Изображение

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.01.2007 (Чт) 1:35

tyomitch
System.Net.Sockets.Socket.Handle?

public System.IntPtr Handle [ get]
Member of System.Net.Sockets.Socket

Summary:
Gets the operating system handle for the System.Net.Sockets.Socket.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.01.2007 (Чт) 7:02

Ага, и как ты потом будешь из него объект воссоздавать? :)

А если lParam объявить как socket?
Впрочем, рекомендованный способ вот.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 12:38

GSerg писал(а):А если lParam объявить как socket?

Так и сделал. При вызове получаю System.Runtime.InteropServices.MarshalDirectiveException: "Невозможно упаковать parameter #1: Определение этого типа не содержит информации макета."
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.01.2007 (Чт) 12:41

GSerg писал(а):Впрочем, рекомендованный способ вот.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 13:23

С GCHandle всё вышло, но возникла новая куча проблем.
Они уже чисто фиброзные (прилетает System.ExecutionEngineException), так что я даже не знаю, кого просить помочь их отдебажить :-(
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 17:52

Отчаявшись, аттачу свой бажный и нерабочий код сюда.
Кто что скажет?
У вас нет доступа для просмотра вложений в этом сообщении.
Изображение

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.01.2007 (Чт) 20:20

tyomitch
VS2003 или 2005? Это я к тому, что стоит ли подождать возращения домой или можно на работе попробовать.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 20:20

Пишут, что в CLR 2.0 есть родная поддержка фиберов.
Поскольку поиск по онлайновому MSDN такой, что его всё равно что нет, ничего более конкретного я не нашёл.
Если у кого MSDN от 2005 студии установлен локально, расскажите, как называются нужные мне классы?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 20:30

(когда я писал предыдущий пост, поста от FaKk2 ещё не было)

У меня 2003, но если под 2005 фиберы безбажнее, то поставлю 2005 :-)

[edit]
Отсюда понял, что с фиберами в 2003 примерно так же, как с потоками в VB: работает до первого чиха. Придётся переползать под 2005, мять-перемять...
[/edit]
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.01.2007 (Пт) 1:03

tyomitch писал(а):У исправленного заголовка, к слову, есть глубокий исторический контекст...

Решил из интереса поглядеть, что за слово там стояло в оригинале, и заодно впервые попробовать заказать товар из-за рубежа. Часа три, поди, искал, где подешевле, и остановился на варианте $1.50 за книжку + $9.00 за доставку. Когда получил в мыло квитанцию от продавца, заботливый Gmail показал "релевантную" рекламу: ту же самую книжку за $3.48 + $3.02 за доставку, т.е. почти вдвое дешевле. Вот злосчастье! :evil:

[edit]
От первого продавца пришло письмо, что мою карточку не смогли авторизовать. Мне невообразимо повезло :-) Заказал эту книжку у второго, там с моей карточкой проблем не возникло.
[/edit]
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.03.2007 (Чт) 21:57

tyomitch писал(а):У исправленного заголовка, к слову, есть глубокий исторический контекст:
«Язык компьютера», Мир, 1989 писал(а):...Члены клуба даже создали собственный словарь. Например, о вышедшем из строя оборудовании они говорили, что его следует «разминать», пока оно не исправится. Проект, не имеющий видимого практического значения и выполняемый исключительно ради удовольствия от самого процесса работы, назывался (как и грубоватые шуточки) «хэк» (hack). Естественно, те, кто занимался подобными проектами, стали называться хэкерами.


[позже]

Решил из интереса поглядеть, что за слово там стояло в оригинале, и заодно впервые попробовать заказать товар из-за рубежа.


Пришла-таки та книга, через два месяца после заказа.

Вот в ней этот кусок:
«Understanding Computers: Software», Time-Life, 1986 писал(а):...They even developed a vocabulary all their own. Ruined equipment was said to be "munged," or mashed until no good; a project with no discernible utility beyond the pleasure taken in its execution was -- like earlier practical jokes -- a "hack." Inevitably, those who hacked were known as hackers.


Можете оценить качество перевода.
Изображение


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList