Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Dec 08, 2019 8:55 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 124 posts ]  Go to page Previous 14 5 6 7 8 9 Next
Author Message
 Post subject: Re: AHCI
PostPosted: Thu Apr 04, 2013 3:25 pm 
Offline
Kernel Developer

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

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


Top
   
 Post subject: Re: AHCI
PostPosted: Thu Apr 04, 2013 4:15 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Для 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 с


Top
   
 Post subject: Re: AHCI
PostPosted: Thu Apr 04, 2013 4:23 pm 
Offline
Designer
User avatar

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


Attachments:
BOARDLOG.TXT [69.81 KiB]
Downloaded 153 times

_________________
Через тернии к звездам
Top
   
 Post subject: Re: AHCI
PostPosted: Thu Apr 04, 2013 4:47 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Leency
Ты про
Quote:
Error: CopyFile->ReadFile
/bd1/4/Testing files/Big_folder_1/1 (1345).txt
Error #6 - End of file, EOF
или
Quote:
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, но тот, кто использует два разных механизма для доступа к одному устройству - ССЗБ.


Top
   
 Post subject: Re: AHCI
PostPosted: Thu Apr 04, 2013 4:55 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
Первое. ОК, в следующий раз буду отключать.

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


Top
   
 Post subject: Re: AHCI
PostPosted: Thu Apr 04, 2013 5:34 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Serge wrote:
Для AHCI пришлось делать в драйвере свой собственный кэш с поиском по хеш-таблице,

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

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

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


Top
   
 Post subject: Re: AHCI
PostPosted: Fri Jun 07, 2013 8:28 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Возможно будет полезным Эмулируют ли QEMU/KVM и VmWare AHCI(SATA) контроллеры?

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


Top
   
 Post subject: Re: AHCI
PostPosted: Thu Jun 20, 2013 4:45 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Для справки, дисковый кеш ahci
Spoiler: Show
Code:
#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;
};


Top
   
 Post subject: Re: AHCI
PostPosted: Mon Jul 01, 2013 7:43 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Начиная с ядра r3742, разделы ntfs и ext2 с драйвером тоже должны работать.
Dell Vostro: таки да, чтение работает.

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


Top
   
 Post subject: Re: AHCI
PostPosted: Mon Jul 01, 2013 8:01 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Отличная новость !


Top
   
 Post subject: Re: AHCI
PostPosted: Mon Jul 01, 2013 8:22 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Проверил воспроизведение видео, работает, но скорости чтения файловой системы недостаточно.


Top
   
 Post subject: Re: AHCI
PostPosted: Mon Jul 29, 2013 4:51 pm 
Offline
Moderator

Joined: Thu Apr 08, 2010 8:11 pm
Posts: 269
Лог на моём ноутбуке.


Attachments:
BOARDLOG.TXT [3.01 KiB]
Downloaded 155 times
Top
   
 Post subject: Re: AHCI
PostPosted: Sun Aug 11, 2013 5:00 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
Диски не видны. Ноутбук Aspire 4740G


Attachments:
File comment: не знаю нужен или нет
BOARDLOG.TXT [6.32 KiB]
Downloaded 152 times
PCIDEV.TXT [2.32 KiB]
Downloaded 149 times

_________________
Через тернии к звездам
Top
   
 Post subject: Re: AHCI
PostPosted: Tue Aug 20, 2013 9:41 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
popovpa
А как всё в реальности подключено ?

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


Top
   
 Post subject: Re: AHCI
PostPosted: Tue Aug 20, 2013 9:50 am 
Offline
Kernel Developer

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 124 posts ]  Go to page Previous 14 5 6 7 8 9 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited