SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000977SAS.Планета[All Projects] Хотелкаpublic14-09-2011 10:3110-10-2012 11:50
Reporterxyz 
Assigned Tovdemidov 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformWindowsOSXPOS VersionSP3
Product Version110418 
Target Version120808Fixed in Version120808 
Summary0000977: Выделение места под файл перед сохранением
DescriptionПока не реализовано хранение тайлов в БД, предлагаю следующую фичу:
выделять необходимое место на диске под файл перед его сохранением. Это поможет избежать фрагментации файла при его сохранении.
Additional Informationсейчас у меня база хранится в томе truecrypt, 16 гиг. занято 53%, из них фрагментированных файлов 27%. это не хорошо.
Tagsкэш, тайлы
Attached Files

- Relationships

-  Notes
(0003926)
vdemidov (manager)
14-09-2011 10:38

И чем это поможет? Одиночные тайлы в любом случае пишутся на диск за один раз.
(0003937)
gpsMax (manager)
14-09-2011 21:53
edited on: 14-09-2011 21:53

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

Хотя у меня трукриптовский том тоже жестоко фрагментирован. Загадка.

(0003947)
Tolik (manager)
15-09-2011 06:07
edited on: 15-09-2011 06:17

Так это проблема трукрипта. Он, наверно, постоянно шифрует данные, переписывает их с места на место, не знаю.

Если говорить о записи тайлов на диск САС.Планетой, то тут ничего улучшить невозможно: большинство тайлов помещаются в один кластер и фрагментироваться не могут никак.

Предлагаю закрыть.

P.S. Хотя встречаются тайлы размером 100 КБ и больше, но нечасто.
P.P.S. В моём кэше самый большой тайл - 148 КБ (Bing Map), занимает целых 3 кластера по 64 КБ.

(0003948)
vdemidov (manager)
15-09-2011 06:16

Ну я с самого начала собирался закрывать, но вдруг у кого полезные замечания есть.
(0003949)
xyz (reporter)
15-09-2011 06:18

при чём тут трукрипт?
система видит его как NTFS, и работает с ним соответственно. а что там шифруется - NTFS не важно. я сегодня поиграюсь с этой темой, не закрывайте пока.
(0003950)
Tolik (manager)
15-09-2011 06:18
edited on: 15-09-2011 06:25

И какой там размер кластера?
P.S. Сам проверил: такой же, как на обычном диске, задаётся при создании тома.

(0003951)
vdemidov (manager)
15-09-2011 06:24

В данном случае фрагментация файлов зависит исключительно от действий ОС и особенностей ФС. Программа не изменяет файлов, а только может удалить или записать файл. Операция выполняется за одно действие.
(0003953)
xyz (reporter)
15-09-2011 07:20
edited on: 15-09-2011 07:29

NTFS Information Dump V1.01
Copyright (C) 1997 Mark Russinovich
http://www.sysinternals.com
Volume Size
-----------
Volume size : 16383 MB
Total sectors : 33553919
Total clusters : 33553919
Free clusters : 15497835
Free space : 7567 MB (46% of drive)

Allocation Size
----------------
Bytes per sector : 512
Bytes per cluster : 512
Bytes per MFT record : 1024
Clusters per MFT record: 2

а вот что удалось посчитать в экселе, правда он всосал только 64к строк, но начиная с самых крупных файлов:

Количество.по.полю.1....Fragments.......................................
размер..2.......3.......4.......5...............Общий.итог
15......10861...................................10861
18......8666....134.............................8800
19......8174....214.............................8388
17......6231....114.............................6345
20......4419....253.............................4672
23......2900....595.............................3495
22......2407....466.............................2873
27......1748....300.....659.....................2707
26......1520....323.....791.....................2634
25......1208....322.....878.....................2408
21......1766....352.............................2118
28......1177....198.....500.....................1875
16......1471....78..............................1549
24......499.....523.....420.....................1442
29......657.....154.....222.....................1033
31......750.....61......106.....................917
30......665.....100.....141.....................906
35......273.............5.......3...............281
34......248.....2.......7.......4...............261
33......189.....18......17......18..............242
32......109.....31......73......13..............226
36......192.............2.......................194
39......180.....................................180
38......137.....................................137
37......96......................................96
43......84......................................84
42......67......................................67
44......65......................................65
47......63......................................63
51......47......................................47
41......47......................................47
46......46......................................46
50......44......................................44
67......40......................................40
55......40......................................40
45......29......................................29
59......27......................................27
52......25......................................25
54......23......................................23
62......22......................................22
49......22......................................22
58......21......................................21
63......19......................................19
60......15......................................15
68......13......................................13
66......12......................................12
71......11......................................11
53......11......................................11
70......8.......................................8
65......8.......................................8
40......8.......................................8
57......7.......................................7
83......6.......................................6
75......6.......................................6
74......6.......................................6
69......6.......................................6
61......6.......................................6
79......5.......................................5
48......4.......................................4
86......3.......................................3
132.....2.......................................2
87......2.......................................2
81......2.......................................2
76......2.......................................2
142.....1.......................................1
141.....1.......................................1
127.....1.......................................1
125.....1.......................................1
122.....1.......................................1
118.....1.......................................1
115.....1.......................................1
113.....1.......................................1
95......1.......................................1
94......1.......................................1
93......1.......................................1
92......1.......................................1
91......1.......................................1
90......1.......................................1
88......1.......................................1
84......1.......................................1
82......1.......................................1
78......1.......................................1
77......1.......................................1
73......1.......................................1
Ог......57437...4238....3821....38..............65534

(0003954)
vdemidov (manager)
15-09-2011 07:49

И?
(0003955)
xyz (reporter)
15-09-2011 08:07

планета на паскале писана, на сколько я помню.
вот такой код создаёт нефрагментированный файл в томе трукрипта размером в 1 гиг.

   assign ( f1,paramstr(1));
   rewrite (f1);
   Seek(f1,size-1);
   Write(f1,temp);
   close (f1);
(0003956)
vdemidov (manager)
15-09-2011 08:49
edited on: 15-09-2011 08:50

Используется TFileStream.

(0003957)
vdemidov (manager)
15-09-2011 10:25

Обдумал. Возможно и имеет смысл. Нужно внимательнее изучить исходники TFileStream и почитать про операции с файлами в винде.
(0003960)
Tolik (manager)
15-09-2011 11:28

...и поскорее придумать кэш в виде больших файлов ;)
Может сделать как в МЯК? Сваливать много тайлов в один файл с индексом в начале?
(0003961)
xyz (reporter)
15-09-2011 11:32

проще в SQLite хранить, но это к данному тикету не относится :)
(0003967)
gpsMax (manager)
15-09-2011 17:15

xyz, согласен и с тем, что с точки зрения системы это обычный том NTFS, и с тем, что размер кластера лучше выставлять минимально возможный, 512 байт, чтобы не терять место на хвостах файлов. Так что фрагментация вполне возможна.
(0003978)
Tolik (manager)
20-09-2011 10:27

vdemidov, а как именно fixed?
(0003979)
vdemidov (manager)
20-09-2011 10:44

Именно так и fixed. Сначала ставим файу нужный размер, а уже затем пишем содержимое. Еще добавил Lock'и при записи и чтении файлов, а то поток обновляющий изображение на экране успевал прочитать тот мусор, который появлялся при создании файла, но до записи данных качалкой.
(0003983)
Parasite (administrator)
21-09-2011 05:37

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

Решение (не сасовское - т.е. по сути костыль): использовать ФС Reiser, оная позволяет писать более 1 файла в один кластер. Грабли: в винде поддерживается лишь слегка больше чем никак - посторонним любительским драйвером, только на чтение, и без учета журнала. :( Ставьте таки ОСЬ в виртуалку, делайте контейнер в оной, и расшаривайте его для САСа по сетке. :)
(0003985)
Tolik (manager)
21-09-2011 05:58

> Ставьте таки ОСЬ в виртуалку, делайте контейнер в оной, и расшаривайте его для САСа по сетке

А можно чуть более пошаговую инструкцию?
(0003986)
vdemidov (manager)
21-09-2011 06:56

Давайте не путать фрагментацию файлов и потери на кластерах. С первым еще как-то можно попробовать бороться, что и сделано, то вот со вторым САС.Планета точно ничего сделать не может это уровень ОС и ФС.
(0003988)
Tolik (manager)
21-09-2011 07:07

> САС.Планета точно ничего сделать не может
Может-может, но это тема другой хотелки (про кэш в виде БД).
(0003989)
Parasite (administrator)
21-09-2011 08:29

>А можно чуть более пошаговую инструкцию?
Ну конечно можно!

>Давайте не путать фрагментацию файлов и потери на кластерах. С первым еще как-то можно попробовать бороться, что и сделано, то вот со вторым САС.Планета точно ничего сделать не может это уровень ОС и ФС.
Так и фрагментация - это тоже уровень ОС и ФС. И даже pre-allocated space не спасет - логически выделенное перед началом записи "монолитное" пространство не обязательно будет таковым на физическом уровне на диске, и чтобы было таки хоть как-то ЧЕСТНО без фрагментации - надо уже после создания файла его тупо дефражить а-ля программа-дефрагментатор, а уж только потом говорить пользователю "Готово, хозяин!". И то гарантии не будет - иногда физически невозможно задефражить большой файл абсолютно без разбиений (например когда своб.места на диске мало).

Но это всё, разумеется, бредятина (в плане кодирования в САС). YAGNI. :)

>это тема другой хотелки (про кэш в виде БД).
(нудно) ...а вот как появятся плагины - так Вы сами сможете прикодить что угодно...! ;)
(0003990)
Tolik (manager)
21-09-2011 10:09

Ммммм.... (мечтательно) плагииины...

Да и вообще при таком большом количестве маленьких файлов фрагментация ни на что не влияет.
Допустим, надо открыть 1000 файлов, из них 100 фрагментирована - состоит из 2-х кластеров. Получается 1100 перемещений считывающей головки вместо 1000 - какая разница? (и это в гипотетическом диске без кэша)
(0003991)
vdemidov (manager)
21-09-2011 10:23

Ну мое исправление заняло строк 5 так что не жалко. Но согласен, что толку от него чуть.

- Users who viewed this issue
User List Anonymous (3071x), xyz (1x), reindjer (1x)
Total Views 3073
Last View 20-04-2024 12:02

- Issue History
Date Modified Username Field Change
14-09-2011 10:31 xyz New Issue
14-09-2011 10:38 vdemidov Note Added: 0003926
14-09-2011 10:38 vdemidov Status new => feedback
14-09-2011 21:51 gpsMax Summary выделение места под файл перед сохранением => Выделение места под файл перед сохранением
14-09-2011 21:51 gpsMax Description Updated View Revisions
14-09-2011 21:53 gpsMax Note Added: 0003937
14-09-2011 21:53 gpsMax Note Edited: 0003937 View Revisions
14-09-2011 21:54 gpsMax Tag Attached: тайлы
15-09-2011 06:07 Tolik Note Added: 0003947
15-09-2011 06:08 Tolik Note Edited: 0003947 View Revisions
15-09-2011 06:08 Tolik Note Edited: 0003947 View Revisions
15-09-2011 06:10 Tolik Note Edited: 0003947 View Revisions
15-09-2011 06:16 vdemidov Note Added: 0003948
15-09-2011 06:16 Tolik Note Edited: 0003947 View Revisions
15-09-2011 06:17 Tolik Note Edited: 0003947 View Revisions
15-09-2011 06:18 xyz Note Added: 0003949
15-09-2011 06:18 xyz Status feedback => new
15-09-2011 06:18 Tolik Note Added: 0003950
15-09-2011 06:22 Tolik Note Edited: 0003950 View Revisions
15-09-2011 06:23 Tolik Note Edited: 0003950 View Revisions
15-09-2011 06:24 vdemidov Note Added: 0003951
15-09-2011 06:25 Tolik Note Edited: 0003950 View Revisions
15-09-2011 06:33 vdemidov Status new => feedback
15-09-2011 07:20 xyz Note Added: 0003953
15-09-2011 07:20 xyz Status feedback => new
15-09-2011 07:28 xyz Note Edited: 0003953 View Revisions
15-09-2011 07:29 xyz Note Edited: 0003953 View Revisions
15-09-2011 07:49 vdemidov Note Added: 0003954
15-09-2011 07:49 vdemidov Status new => feedback
15-09-2011 08:07 xyz Note Added: 0003955
15-09-2011 08:07 xyz Status feedback => new
15-09-2011 08:49 vdemidov Note Added: 0003956
15-09-2011 08:50 vdemidov Note Edited: 0003956 View Revisions
15-09-2011 08:50 vdemidov Note Revision Dropped: 3956: 0001998
15-09-2011 10:25 vdemidov Note Added: 0003957
15-09-2011 11:28 Tolik Note Added: 0003960
15-09-2011 11:32 xyz Note Added: 0003961
15-09-2011 17:15 gpsMax Note Added: 0003967
20-09-2011 08:23 vdemidov Status new => resolved
20-09-2011 08:23 vdemidov Fixed in Version => 120808
20-09-2011 08:23 vdemidov Resolution open => fixed
20-09-2011 08:23 vdemidov Assigned To => vdemidov
20-09-2011 08:23 vdemidov Product Version .Nightly => 110418
20-09-2011 08:23 vdemidov Target Version => 120808
20-09-2011 10:27 Tolik Note Added: 0003978
20-09-2011 10:44 vdemidov Note Added: 0003979
21-09-2011 05:37 Parasite Note Added: 0003983
21-09-2011 05:58 Tolik Note Added: 0003985
21-09-2011 06:56 vdemidov Note Added: 0003986
21-09-2011 07:07 Tolik Note Added: 0003988
21-09-2011 08:29 Parasite Note Added: 0003989
21-09-2011 10:09 Tolik Note Added: 0003990
21-09-2011 10:23 vdemidov Note Added: 0003991
21-09-2011 19:46 gpsMax Tag Attached: кэш
10-10-2012 11:50 Tolik Status resolved => closed



Copyright © 2007 - 2024 SAS.Planet Team