Size: a a a

2019 December 26

ЕО

Евгений Омельченко in Go-go!
Для реализации system call используются в x86 используется один из трёх механизмов:

Либо специальные набор инструкци от Intel

https://www.felixcloutier.com/x86/sysenter
https://www.felixcloutier.com/x86/sysexit

Либо специальный набор инструкций от AMD

https://www.felixcloutier.com/x86/syscall
https://www.felixcloutier.com/x86/sysret

Либо софтварное прерывание 080h
источник

AS

Andrei 🦉 Sergeev in Go-go!
Marat Mkhitaryan
Например в питоне нельзя CPU bound задачи ставить на asyncio, а у голанг с горутинами cpu bound можно давать?
можно, но горутин с cpu bound задачами должно быть не больше, чем количество ядер на машине
источник

MM

Marat Mkhitaryan in Go-go!
На процессорах то что пишут до 4 ггерц это и есть эти прирывания?
источник

MM

Marat Mkhitaryan in Go-go!
Евгений Омельченко
Это системный вызов, он внутри ядра реализован. Там приблизительно такой же алгоритм — есть таблица виртуальных страниц памяти, ядро там выделяет новую страницу, которую никуда не мапит. Когда процесс пытается обратиться к этой странице, то возникает page fault, специальное прерывание, ядро его обрабатывает и выделяет процессу уже реальную память (это если включен оверкоммит)
Кернел линукс это как ядро тут?
источник

MM

Marat Mkhitaryan in Go-go!
Andrei 🦉 Sergeev
можно, но горутин с cpu bound задачами должно быть не больше, чем количество ядер на машине
Почему?
источник

DP

Daniel Podolsky in Go-go!
Marat Mkhitaryan
На процессорах то что пишут до 4 ггерц это и есть эти прирывания?
коллега, а вы нас не тролите?
источник

DP

Daniel Podolsky in Go-go!
Marat Mkhitaryan
Кернел линукс это как ядро тут?
kernel - это и есть ядро
источник

MM

Marat Mkhitaryan in Go-go!
Daniel Podolsky
коллега, а вы нас не тролите?
Мне всегда так говорят :)  на самом деле я не тролю
источник

D

Darwin in Go-go!
Daniel Podolsky
коллега, а вы нас не тролите?
да он тут частый гость тролль вечеринок
источник

DP

Daniel Podolsky in Go-go!
Marat Mkhitaryan
Почему?
потому, что шедулер получает управление не по собственной инициативе.

но исходное утверждение неверное.

CPU bound задачи можно вполне крутить в горутинах. и обычно это вообще проблем не вызывает - шедулер получает управление на любом не-inline вызове.

один раз я столкнулся с проблемой, пришлось в цикл вставить runtime.Goshed() вызов
источник

MM

Marat Mkhitaryan in Go-go!
Daniel Podolsky
потому, что шедулер получает управление не по собственной инициативе.

но исходное утверждение неверное.

CPU bound задачи можно вполне крутить в горутинах. и обычно это вообще проблем не вызывает - шедулер получает управление на любом не-inline вызове.

один раз я столкнулся с проблемой, пришлось в цикл вставить runtime.Goshed() вызов
Шэдулер го рантайма? Не ОС?
источник

DP

Daniel Podolsky in Go-go!
не ос
источник

V

Vabka in Go-go!
Marat Mkhitaryan
На процессорах то что пишут до 4 ггерц это и есть эти прирывания?
4ггц это по идее количество тактов
источник

AS

Andrei 🦉 Sergeev in Go-go!
Daniel Podolsky
потому, что шедулер получает управление не по собственной инициативе.

но исходное утверждение неверное.

CPU bound задачи можно вполне крутить в горутинах. и обычно это вообще проблем не вызывает - шедулер получает управление на любом не-inline вызове.

один раз я столкнулся с проблемой, пришлось в цикл вставить runtime.Goshed() вызов
можно, но какой в этом толк?
4 горутины на 4х ядерной машине выполняя cpu bound задачи параллельно сделают эти задачи заметно быстрее, чем если каждую cpu bound задачу поместить в отдельную горутину

горутины и го шедулеры не бесплатны
источник

MM

Marat Mkhitaryan in Go-go!
Vabka
4ггц это по идее количество тактов
Да, я их имел ввиду
источник

V

Vabka in Go-go!
Marat Mkhitaryan
Да, я их имел ввиду
ну это не то же самое, что и прерывания
источник

DP

Daniel Podolsky in Go-go!
Andrei 🦉 Sergeev
можно, но какой в этом толк?
4 горутины на 4х ядерной машине выполняя cpu bound задачи параллельно сделают эти задачи заметно быстрее, чем если каждую cpu bound задачу поместить в отдельную горутину

горутины и го шедулеры не бесплатны
но довольно дешевы, экономить на них смысла нет
источник

V

Vabka in Go-go!
Daniel Podolsky
но довольно дешевы, экономить на них смысла нет
но ведь не бесплатно всё равно
источник

V

Vabka in Go-go!
надо бы бенчмарк по идее сделать
источник

W

WaveCut in Go-go!
Привет всем. Смарите. Очень хочется настроить пайплайны на GitHub Actions, но вообще не хочется палить секреты внутри экосистемы майкрософта. Какие варианты?
источник