
Александр
03.03.2018
18:17:14
так! я попрошу не путать легкоживующие гоурутины, с тяжелыми процессаим которые почти в бесконечном цикло молотят

Daniel
03.03.2018
18:17:26
все одно чушь

Sergey
03.03.2018
18:17:34

Александр
03.03.2018
18:17:47
ну вот даниел не верит что-то в истины

Google

Daniel
03.03.2018
18:17:49

Александр
03.03.2018
18:18:27
будут, именно поэтому делают канал и на него подписывают воркеров по количеству ядер. А не на каждую микрозадачу свою гоурутину

Daniel
03.03.2018
18:18:59

Savely
03.03.2018
18:19:08
А ее можно удалить?

Foxcool
03.03.2018
18:19:11
дак если я не путаю, системных тредов все равно по дефолту немного будет (по числу ядер что ли). А гороутины уже можно гораздо больше числа ядер создавать
главное не сажать роутины наглухо на проц и не забивать все ядра сразу

Daniel
03.03.2018
18:19:53
коллеги
ну херню же говорите
причем так уверенно...

Foxcool
03.03.2018
18:20:57
расскажи нормально нехерню, лично я с радостью почитаю (:

Александр
03.03.2018
18:21:00
ну вот с чего вы решили то? там еще блокировки будут постоянные
плюсом в оверхеду на переключение гоурутин

Google

Foxcool
03.03.2018
18:21:34
там переключение не такое же дорогое, как у тредов таки

Александр
03.03.2018
18:21:35
(если использовать мьютекс для записи)
да не такое дорогое, но когда у вас запись на 128 миллионов записей...

Daniel
03.03.2018
18:21:57

Александр
03.03.2018
18:24:53
он просто выжрет все ядра (64 на xeon) и похоронит систему ?
я лично проходил
но это было год или два назад, на 1.2 если память не изменяет
там еще надо было специально указывать количество ядер при старте

Daniel
03.03.2018
18:25:38

Kirill
03.03.2018
18:25:40
Ты явно сам же написал фигню
Тем более, год назад кто 1.2 в проде держал?

Alexey
03.03.2018
18:26:24

Daniel
03.03.2018
18:27:54

Alexey
03.03.2018
18:27:57
https://play.golang.org/p/0H28rZFzb6y

Александр
03.03.2018
18:28:12
походу даниел сделал макрос со словом "херня"

Foxcool
03.03.2018
18:28:33
а в чем предмет спора вообще?
Что если надо делать что-то долгое и тяжелое (не IO), то не создавать кучу гороутин, а делать некий пулл, куда по входящему каналу идут задачи, а по исходящему результат (очередь пресловутая)?

Daniel
03.03.2018
18:29:06

Google

Kirill
03.03.2018
18:29:32

Daniel
03.03.2018
18:30:01

Foxcool
03.03.2018
18:30:46
и еще, нафига так конликтогенами сыпать?

Daniel
03.03.2018
18:31:04
у меня реально начинались лаги в районе 10М горутин
но 10М - это очень много

Foxcool
03.03.2018
18:31:23
зачим атмосферу такую токсичную заводить. так превратимся в горстку агрессивных задротов, где за вопрос на писюнделях оттаскивают (:

Daniel
03.03.2018
18:31:53
не-не-не

Kirill
03.03.2018
18:32:00
Напрашивается вопрос к Александру Попову - есть ли у него родственник по имени Денис? :))

Daniel
03.03.2018
18:32:00
херню надо называть херней

Александр
03.03.2018
18:32:06
я вам напишу тест, только не сегодня

Daniel
03.03.2018
18:32:13
ок, ждем
спасибо!

Kirill
03.03.2018
18:32:24
Слив засчитан ?

Alexey
03.03.2018
18:32:33
Наверно, вы про разные лаги говорите просто.

Александр
03.03.2018
18:32:47

Alexey
03.03.2018
18:33:14

Kirill
03.03.2018
18:33:16

Daniel
03.03.2018
18:34:18

Ruslan
03.03.2018
18:41:27
А если какую нибудь синтетическую задачу просто запустить и проверить? Не знаю, создать сотни тысяч горутин и в них выполнять условный поиск по графу (любая задача требуящая много процессорного времени) и проверить просто?

Daniel
03.03.2018
18:41:45
проверено неоднократно

Google

Ruslan
03.03.2018
18:42:25
А если при этом приложению оперативы не хватит, допустим, на хранение данных, оно начнет кешировать данные на диск?

Kirill
03.03.2018
18:43:00
У меня реальные задачи и около 400 горутин на одно ядро на самом мелком проекте, всё работает хорошо

Daniel
03.03.2018
18:43:01
а?!

Kirill
03.03.2018
18:43:14

Admin
ERROR: S client not available

Daniel
03.03.2018
18:43:25
само приложение кешировать данные на диск не начнет. не умеет.

Ruslan
03.03.2018
18:43:51
ОС умеет

Daniel
03.03.2018
18:43:53
если у нас система в своп ушла - это да, будут лаги
но они и при одной горутине будут

Ruslan
03.03.2018
18:44:05
Ну вот, я про это
Единственный вариант при котором всё лагать начнет который возник в голове
Может человек в диалоге выше с чем-то подобным и столкнулся

Daniel
03.03.2018
18:45:01
а еще можно выключить комп. тогда вообще ничего не будет работать
но не распознал, и решил, что виноваты горутины?

Александр
03.03.2018
18:46:23
type RowStruct struct {
ID int
ParentId int
Level int
Name string
}
db := make([]*RowStruct, 10000000)
вот приблизительно объем бд, уровней вложенности - 10
первым циклом вы фильтруем все level 0 элементы, и на каждый запускаем гоурутину которая ищет подуровни
и так циклы циклы циклы...

Ruslan
03.03.2018
18:47:43
Какая странная реализация поиска в глубину

Александр
03.03.2018
18:48:02
это не совсем поиск
это перестроение дерева

Google

Александр
03.03.2018
18:48:22
надо чужие ID на свои поменять, паралельно мы создаем свое

Daniel
03.03.2018
18:48:36
сколько горутин мы в результате запустили? 10М?

Александр
03.03.2018
18:48:53
около 7 на нулевой уровень
на первом уровне запустим около 20

Daniel
03.03.2018
18:49:27
не, не понимаю

Александр
03.03.2018
18:49:36
на третьем уровне запустим ...
на 12 клетке у нас кончается зерно и приехали ?
ну если вы понимаете о чем я

Daniel
03.03.2018
18:50:26
"я написал программу, которая не работает. видимо, это потому, что горутины лагают"

Александр
03.03.2018
18:50:49
вообще то я и говорю что такой подход не срабатывает O_o
но вы упорно мне пытаетесь доказать что все ок, можно плодить

Daniel
03.03.2018
18:51:24
а?!

Александр
03.03.2018
18:52:55
7 гоурутин сидели в main, каждая наплодила еще 20, та наплодила еще по 10... уже 1400 гоурутин ?

Daniel
03.03.2018
18:53:08
и что?
я же говорю - проблемы начинаются в районе 10М