Alexander
типа стриминга, пайпов, vectors
Alexander
о, vmsplice полущ на копейки
Alexander
а как узнать размер страницы?
分解物質
#include <unistd.h>
sysconf(_SC_PAGESIZE)
Alexander
угу
Alexander
так не прокатил vmsplice на stdout выдает EBADF
分解物質
я не думаю что от этого будет много смысла учитывая сколько времени уходит в sys у наших программ
Alexander
а, блин
Alexander
как проверить, что stdout это pipe?
分解物質
fstat
Alexander
о прикольно с vmsplice у меня вообще мусор
Alexander
но какой-то структурированный больно
Alexander
жесть какая-то
Alexander
зато быстро
Alexander
но не правильно
Alexander
пофиг, не сейчас похоже
分解物質
сильно быстрее?
Alexander
да там все криво непонятно ничего пока
分解物質
тогда и я попробую
Alexander
как её правильно в /dev/null отравить?
Alexander
> /dev/null не pipe
Alexander
хм.. одна фигня примерно получается
Alexander
но в данных мусор
Alexander
видимо что-то перетирается
Alexander
https://gist.github.com/zinid/ac3bdb27237f4df150af9401229c3a52 ragel
分解物質
я не очень понял как io с vmsplice делать
Alexander
https://github.com/ezequielgarcia/splice/blob/master/vmsplice.c такой пример есть в интернетах
Alexander
я тоже не до конца понимаю
Alexander
тупая замена write на vmsplice даже с выделением новых страниц не работает
Aragaer
вы размногопоточить решили чтле?
Alexander
нет
Alexander
zerocopy ядерное поюзать
Aragaer
а зря, потому что оно параллелится нормально
Alexander
кто-нить прицепите стратегии в haskell
Alexander
ну я вообще сназу новые страницы аллоцировал
Alexander
но мне не помогло
Alexander
о, помогло
Alexander
как бы теперь померять нормально
Alexander
через | tee > /dev/null медленее
Alexander
почень интересно, оно посылает чанки разного размера write вот всега все посылало
分解物質
分解物質
Alexander
ну у меня проверка
Alexander
while(size) { ssize_t len = write(..); size-=len; buffer+=len }
Alexander
@yellow_apple ^
Mikhail
Ребят, как вы код вставляете так?
Alexander
` <-
Alexander
три ` в первой строке и в последней
Mikhail
как на github? клево
Alexander
да, тут вроде недомакрдаун _тест_, *тест*, **тест**
Alexander
в общем только для кода работают ещё `inline их можно
Alexander
с дурацким `парсером`
分解物質
分解物質
Alexander
нет
Alexander
write же возращает сколько записал
Alexander
я отнимаю от size это и добавляю к buffer
分解物質
ну правельно
Alexander
и цикл пока size не равен нулю
Alexander
так вот, с write эта штука просто для безопасности
Alexander
ни разу не прикодилось
Alexander
а vmsplice по кускам почти всегда
分解物質
Alexander
или мы о разном или я не понимаю тогда вопроса
Alexander
да
Alexander
страницы через posix_memalign(buffer, PAGE_SIZE, BUF_SIZE)
Alexander
BUF_SIZE=64*PAGE_SIZE
Alexander
в тестовой программе страницы не освобождаю никогда
分解物質
уже норм выводит?
Alexander
vmsplice обычно записывает по 24576 за раз
Alexander
нет, хуже write
Alexander
такое ощущение что зависит от "той стороны"
Alexander
это я в tee слал, сейчас в md5 и чанки другого размера записываются за раз
Alexander
32768 чаще всего
eahqzsr
Alexander
т.е. наверное если на той стороне пайпы будет реальная программа, то какой-то толк в vmsplice будет
分解物質
мда
Alexander
а стоп