Board.KolibriOS.org

Official KolibriOS board
It is currently Sat May 25, 2019 12:45 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 160 posts ]  Go to page Previous 15 6 7 8 911 Next
Author Message
PostPosted: Thu Feb 02, 2017 7:12 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Shell копирует кусочками по 4Кб? Ёбаный стыд... Идём на рекорд.


Top
   
PostPosted: Thu Feb 02, 2017 10:45 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Ну это я потом поправлю (размер буфера шелл), тем более еще нашлось несколько проблемок с шелл.

Но, похоже, что при массовых системных операциях (у меня - файловых, у Акрона - создания кнопок), в системе отваливаются кнопки - старые не реагируют, новые не создаются. И меню рисуется абы как.

Будем воспроизводить.

1я попытка копирования 922Мб файла шелом завершилась провалом на примерно 512Мб - ошибка копирования и вышеописанный песец системы.

2я попытка прошла успешно (сразу после перезагрузки) и без последствий. Заняла в фоне примерно 4ч15 минут, загрузка CPU была 3-5%
Тестирование копии прошло успешно unzip -t file.zip - повреждений нет

Кстати, вот пример скрипта для засечек времени
Spoiler: Show
#SHS
cd /usbhd0/1/programs
date
echo unzip started
unzip cmake -d/hd0/1/cmt
waitfor
date


Top
   
PostPosted: Mon Feb 06, 2017 3:40 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Поправленная версия shell копирует тот же файл за 4м:20с

Тем не менее, программы, которые пишут мелкими кусками (unzip etc), будут работать все также медленно, без отложенного кэша записи.


Top
   
PostPosted: Mon Feb 06, 2017 6:09 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
В 60 раз быстрее. :lol:

Но всё равно медленно. Какой размер буфера?


Top
   
PostPosted: Mon Feb 06, 2017 8:17 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Буфер 1Mb, но не более половины свободной памяти (уменьшаем при нехватке с шагом :2)

Для виртуалки нормальная скорость - в сравнении KFM примерно одинаково.


Top
   
PostPosted: Tue Feb 07, 2017 9:02 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
0CodErr wrote:
Размер должен возвращаться.
Pathoswithin wrote:
Ну так я мог бы исправить документацию вместо кода. :wink:
Ну так ты всё же понял для чего это нужно?
Судя по сообщению в чате, похоже понял
Quote:
Pathoswithin « Пн фев 06, 2017 8:33 pm » В документации написано "Если файлы в папке кончились раньше, чем было прочитано запрошенное количество, то функция прочитает, сколько сможет, после чего вернёт eax=6".


Top
   
PostPosted: Tue Feb 07, 2017 10:47 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
*facepalm* Там про файл, а там про папку, чему ты это вообще...


Top
   
PostPosted: Tue Feb 07, 2017 11:03 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Мдам.. похоже ты всё-таки не понял :)

С файлом аналогично. Только вместо количества блоков будет количество прочитанных/записанных байтов.


Top
   
PostPosted: Wed Feb 08, 2017 9:17 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
У папки количество блоков находится в БДВК, а в ebx только дублируется. Папка всегда читается полностью, не зависимо от количества запрошенных блоков, потому есть смысл попробовать прочитать какое-то количество наугад. При чтении файла в статический буфер тоже можно так сделать, но обычно сначала нужно узнать его размер. При записи в файл достаточно проверить наличие ошибки.


Top
   
PostPosted: Wed Feb 08, 2017 6:59 pm 
Offline
User avatar

Joined: Mon Jul 25, 2011 6:22 pm
Posts: 93
Pathoswithin wrote:
У папки количество блоков находится в БДВК, а в ebx только дублируется. Папка всегда читается полностью, не зависимо от количества запрошенных блоков, потому есть смысл попробовать прочитать какое-то количество наугад. При чтении файла в статический буфер тоже можно так сделать, но обычно сначала нужно узнать его размер. При записи в файл достаточно проверить наличие ошибки.


"При чтении файла в статический буфер тоже можно так сделать, но обычно сначала нужно узнать его размер." - Узнаётся из записи файла в ФС, причём любой ФС.
"При записи в файл достаточно проверить наличие ошибки." - Какой? - Записался/Не дописался/Не записался/...

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Top
   
PostPosted: Wed Feb 08, 2017 8:02 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Pathoswithin wrote:
У папки количество блоков находится в БДВК, а в ebx только дублируется.
КЭП? :mrgreen: А вот для файлов оно не дублируется.
Pathoswithin wrote:
есть смысл попробовать прочитать какое-то количество наугад
:shock:
Pathoswithin wrote:
сначала нужно узнать его размер
Дополнительный системный вызов?

Ты когда-нибудь занимался обработкой файлов? Вполне типичные примеры:
Code:
While BytesRead > 0 Do ... ;
Code:
Repeat  
  ..............
  ReadFile ... ; 
  ..............
Until (BytesRead < ReadBufferSize); 
Можно читать While Not EOF, EOF будет означать, что прочитан последний кусок, но он не обязан быть равным размеру буфера. Вот в ebx и возвращается BytesRead.


Top
   
PostPosted: Wed Feb 08, 2017 8:32 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Ну а при записи в файл достаточно проверить наличие ошибки. Что не так?


Top
   
PostPosted: Wed Feb 08, 2017 9:17 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
С одной стороны, насколько знаю, у нас сейчас в KolibriOS или записано всё, или ничего. Будет ли оно так всегда?
Но с другой, вообще попадаются исходники в сети, в которых идёт проверка if bytesWritten < ...
Наткнулся ещё на https://www.linux.org.ru/news/opensource/3591104
Quote:
Если ваша файловая система возвращает ENOSPC при закрытии файла через вызов close(), а не при записи в него через write() ...
Но у нас сейчас нет дескрипторов. Вроде сейчас такой проблемы в KolibriOS нет?


Top
   
PostPosted: Wed Feb 08, 2017 11:38 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Что поменялось с работой с путями в нескольких последних ревизиях?

unzip перестал находить файл архива, если я шелл запускаю с флэшки
при этом
pwd
/<сердечко>/usbhd0/1/PROGRAMS - заглавными

если я делаю пару смен каталога - на другой диск и обратно - сердечко и заглавные буквы из pwd пропадают и все работает

похоже, проблема в сердечке, заглавные буквы не влияют

флешка - FAT

но самому шеллу сердечко не мешает


Top
   
PostPosted: Thu Feb 09, 2017 1:21 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
В последних ревизиях я курочил только ext.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 160 posts ]  Go to page Previous 15 6 7 8 911 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited