Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт авг 18, 2017 6:06 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 118 сообщений ]  На страницу Пред. 14 5 6 7 8 След.
Автор Сообщение
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт апр 04, 2013 3:25 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Размер не влияет, потому что там алгоритм перебирает по кольцу все номера секторов кешированных, никаких хитрых списков ускоряющих поиск. Так что с увеличением кеша скорость даже может упасть при текущем алгоритме поиска.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт апр 04, 2013 4:15 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Для AHCI пришлось делать в драйвере свой собственный кэш с поиском по хеш-таблице, потому что fat32 читает с диска по одному сектору, а это очень медленно.
Тесты: кэш 4 Мб
256 элементов по 16КБ - 7.4 с
128 х 32КБ - 6.3 с
64 х 128КБ - 5.8 с

кэш 8 МБ
512 х 16Кб - 7.3 с
256 х 32КБ - 6.4 с
128 х 64 КБ - 5.8 с

кэш 2МБ
128 х 32КБ - 6.3 с


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт апр 04, 2013 4:23 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4092
Копировал 100500 файлов из /sd в /tmp и где-то что-то пошло не так. В системе были /bd.
В логе, кстати, видно место, когда произошла проблема с копированием файла. Потом я пытался убить безуспешно поток (видно в логах), т.к. после изменений CleverMouse поток умрёт только после полного окончания работы с ФС.


Вложения:
BOARDLOG.TXT [69.81 КБ]
67 скачиваний

_________________
Через тернии к звездам
Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт апр 04, 2013 4:47 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Leency
Ты про
Цитата:
Error: CopyFile->ReadFile
/bd1/4/Testing files/Big_folder_1/1 (1345).txt
Error #6 - End of file, EOF
или
Цитата:
K : Process - forced terminate PID: 00000029 [EOLITE]
K : Page fault
K : EAX : 0C49A5C8 EBX : 00C30010 ECX : 00270003
K : EDX : 00FFFFFF ESI : 00021730 EDI : 0001025C
K : EBP : 0009FFCC EIP : 00019247 ESP : 0009FFC0
K : Flags : 00011202 CS : 0000001B (application)
Я не могу пока отключить /bd после загрузки AHCI, но тот, кто использует два разных механизма для доступа к одному устройству - ССЗБ.


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт апр 04, 2013 4:55 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4092
Первое. ОК, в следующий раз буду отключать.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт апр 04, 2013 5:34 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
Для AHCI пришлось делать в драйвере свой собственный кэш с поиском по хеш-таблице,

Было бы замечательно прикрутить и к IDE режиму. Я в свое время не осилил к сожалению, хоть и планы были.
Serge писал(а):
потому что fat32 читает с диска по одному сектору, а это очень медленно.

Для DMA есть предварительный кэш на 16 секторов, которые считываются одним запросом.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Пт июн 07, 2013 8:28 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Возможно будет полезным Эмулируют ли QEMU/KVM и VmWare AHCI(SATA) контроллеры?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Чт июн 20, 2013 4:45 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Для справки, дисковый кеш ahci
Спойлер: Показать
Код:
#define BLOCK_SIZE    64
#define BLOCK_SHIFT    6
#define CACHE_SIZE    64
#define SECTOR_SIZE  512

size_t  _stdcall ahci_adjust_cache_size(void* userdata, size_t suggested_size)
{
    printf("LRU cache %dx%dKB size %d\n",CACHE_SIZE,BLOCK_SIZE/2, CACHE_SIZE*BLOCK_SIZE*SECTOR_SIZE);
    return 0; //suggested_size;
}

typedef struct
{
    struct list_head lru_list;
    struct list_head key_list;
    int64_t start;
    char   *mem;
    void   *r;
}dcache_t;

dcache_t dcache[CACHE_SIZE];

struct list_head key_hash[CACHE_SIZE];

struct list_head dcache_lru;

int init_dcache()
{
    int i;
    char *mem;

    mem = KernelAlloc(CACHE_SIZE*BLOCK_SIZE*SECTOR_SIZE);

    if(mem == NULL)
        return -ENOMEM;

    for(i = 0; i < CACHE_SIZE; i++)
        INIT_LIST_HEAD(&key_hash[i]);

    INIT_LIST_HEAD(&dcache_lru);

    for(i = 0; i < CACHE_SIZE; i++)
    {
        INIT_LIST_HEAD(&dcache[i].key_list);

        dcache[i].mem = mem + i * BLOCK_SIZE * SECTOR_SIZE;
        list_add_tail(&dcache[i].lru_list, &dcache_lru);
    }

    return 0;
};


int _stdcall dcache_disk_read(void* userdata, void* buffer, int64_t startsector, int* numsectors)
{
    int i, key;
    int64_t sector;
    int     offset;
    dcache_t *cache, *tmp_cache;

//    return ahci_disk_read(userdata, buffer, startsector, *numsectors);

    for(i = 0; i < *numsectors; i++)
    {
        sector = (startsector + i) & ~((u64)BLOCK_SIZE - 1);
        offset = (startsector + i) & (BLOCK_SIZE - 1);

        key = (sector >> BLOCK_SHIFT) & (CACHE_SIZE - 1);

        cache = NULL;

        list_for_each_entry(tmp_cache, &key_hash[key], key_list)
        {
            if(tmp_cache->start == sector)
            {
                cache = tmp_cache;
                list_del(&cache->lru_list);
                break;
            }
        };

        if(cache == NULL)
        {
            cache = container_of(dcache_lru.next, dcache_t, lru_list);
            list_del(&cache->key_list);
            list_del(&cache->lru_list);

            ahci_disk_read(userdata, cache->mem, sector, BLOCK_SIZE);
            cache->start = sector;
            list_add_tail(&cache->key_list, &key_hash[key]);
        }

        list_add_tail(&cache->lru_list, &dcache_lru);

        memcpy((char*)buffer + i * SECTOR_SIZE, cache->mem + offset *SECTOR_SIZE, SECTOR_SIZE);
    };

    return 0;
};


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Пн июл 01, 2013 7:43 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1596
Начиная с ядра r3742, разделы ntfs и ext2 с драйвером тоже должны работать.
Dell Vostro: таки да, чтение работает.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Пн июл 01, 2013 8:01 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Отличная новость !


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Пн июл 01, 2013 8:22 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Проверил воспроизведение видео, работает, но скорости чтения файловой системы недостаточно.


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Пн июл 29, 2013 4:51 pm 
Не в сети
Moderator

Зарегистрирован: Чт апр 08, 2010 8:11 pm
Сообщения: 264
Лог на моём ноутбуке.


Вложения:
BOARDLOG.TXT [3.01 КБ]
67 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Вс авг 11, 2013 5:00 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4092
Диски не видны. Ноутбук Aspire 4740G


Вложения:
Комментарий к файлу: не знаю нужен или нет
BOARDLOG.TXT [6.32 КБ]
62 скачивания
PCIDEV.TXT [2.32 КБ]
63 скачивания

_________________
Через тернии к звездам
Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Вт авг 20, 2013 9:41 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
popovpa
А как всё в реальности подключено ?

Leency
А драйвер вообще запускался ? Я никаких следов этого не обнаружил.


Вернуться к началу
 Заголовок сообщения: Re: AHCI
СообщениеДобавлено: Вт авг 20, 2013 9:50 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
ftp://ftp.kolibrios.org/users/Serge/new/ahci_rc06.7z
Отключены режимы энергосбережения. Прощайте, батарейки.
Mario_r4
Интересует вредный Dell Inspiron N7010


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 118 сообщений ]  На страницу Пред. 14 5 6 7 8 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB