Задать вопрос
  • Существует аналог owncloud под windows server?

    MilkyCoder
    @MilkyCoder Автор вопроса
    peronik: Ориентируясь на линукс вы делаете большую ошибку, там господствует фри и опенсурс. В то время как платный софт это виндвос. Успехов.
  • Существует аналог owncloud под windows server?

    MilkyCoder
    @MilkyCoder Автор вопроса
    peronik: MilkyCoder @MilkyCoder
    Вобщем на днях хотел установить сие чудо. Мало того что инсталлер пришлось искать очень долго, так при установке выяснилось, что там не софт а хлам. Во первых что это за C++ 2005 года? Как бы на календарик надо поглядывать хотя бы иногда. MySQL 5.5 ? Мне такое на моем windows серваке не нужно, MSSQL еще куда не шло, еще MSSQL Express было бы в тему, как раз чтоб попробовать. Ну и в заключение SharePoint я себе ни за что ставить не буду. Судя даже по компонетам что вы использовали, можно судить о характере ваших высокоуровневых разработок, и что они будут жестко лагать. Такие вещи надо было разрабатывать на чистом ASP.NET MVC и только.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    >> алгоритм размазан по разным методам

    Это только инициализация.

    >> Кстати, вы не привели код, который создает MemoryMappedViewAccessor

    Посмотрите на 300 пикселей выше вашего поста :)

    >> Почему-то у offset используется только младшая часть

    Не очень понял поясните.

    >> PS что там насчет варианта с WAL?

    Пока что самый вменяемый вариант.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    mayorovp но честно говоря ваш ответ, это пока единственный выход.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Oxoron Мне интересно, каким образом тогда делают тесты производительности записи блоков по случайным адресам. Они работают так же быстро как и последовательные. Например на моем SSD, в Samsung Magician, есть такой тест.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Спасибо за инфу. Честно говоря не хотел бы прибегать к таким мерам. Получается после каждого обновления записи мне придется делать новую запись в лог. При этом старая запись будет какое то время висеть в этом же файле, пока файл не перезапишется, для этого нужно будет делать специальный алгоритм. Придется держать отдельный индекс, который мапит код на смещение в этом логе. Вобщем я еще морально не готов к этому :)
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Использование:

    void InitFile()
    {
    if (body != null)
    {
    body.SafeMemoryMappedViewHandle.ReleasePointer();
    body.Dispose();
    }
    if (file != null)
    {
    file.Dispose();
    }

    length = fs.Length;
    this.file = fs.CreateMMF(key);

    body = file.CreateViewAccessor(0, length, MemoryMappedFileAccess.ReadWrite);

    bodyPtr = (long*)body.Pointer(0);
    }

    А да забыл сказать, если вы поменяли размер файла с помощью FileStream.SetLength тогда MMF тоже надо пересоздать.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    public static SYSTEM_INFO Info;

    [DllImport("kernel32.dll", SetLastError = true)]
    internal static extern void GetSystemInfo(ref SYSTEM_INFO lpSystemInfo);

    public struct SYSTEM_INFO
    {
    internal int dwOemId;
    internal int dwPageSize;
    internal IntPtr lpMinimumApplicationAddress;
    internal IntPtr lpMaximumApplicationAddress;
    internal IntPtr dwActiveProcessorMask;
    internal int dwNumberOfProcessors;
    internal int dwProcessorType;
    internal int dwAllocationGranularity;
    internal short wProcessorLevel;
    internal short wProcessorRevision;
    }
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    mayorovp:
    public static byte* Pointer(this MemoryMappedViewAccessor acc, long offset)
    {
    var num = offset % Info.dwAllocationGranularity;

    byte* tmp_ptr = null;

    RuntimeHelpers.PrepareConstrainedRegions();

    acc.SafeMemoryMappedViewHandle.AcquirePointer(ref tmp_ptr);

    tmp_ptr += num;

    return tmp_ptr;
    }
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    >> Зачем для смены отображенного блока закрывать файл?

    Я не правильно выразился, создание нового представления map.CreateViewAccessor(....) с параметрами. Думаю нет. Не проще. Дело еще не только в этом, создание и уничтожение представления имеет большие накладные расходы. Я могу дать вам функции которые я использую в продакшене для этого, если интересно:
    public static MemoryMappedFile CreateMMF(this FileStream fs, string key)
    {
    var obj = null as MemoryMappedFile;

    //Debug.Write(key);
    //Debug.Write(" : ");
    //Debug.WriteLine(fs.Name);

    //Console.Write(key);
    //Console.Write(" : ");
    //Console.WriteLine(fs.Name);

    int step = 0;

    while (true)
    {
    step++;

    //Debug.WriteLine("Step: " + step);
    //Console.WriteLine("Step: " + step);

    try
    {
    //Debug.Write("Try create: ");
    //Console.Write("Try create: ");

    obj = MemoryMappedFile.CreateFromFile
    (
    fs,
    key,
    fs.Length,
    MemoryMappedFileAccess.ReadWrite,
    null,
    HandleInheritability.Inheritable,
    true
    );

    //Debug.WriteLine("Done");
    //Console.WriteLine("Done");

    break;
    }
    catch (Exception e0)
    {
    //Debug.WriteLine("Fail");
    Debug.WriteLine(e0.Message);

    //Console.WriteLine("Fail");
    //Console.WriteLine(e0.Message);

    try
    {
    //Debug.Write("Try open: ");
    //Console.Write("Try open: ");

    obj = MemoryMappedFile.OpenExisting
    (
    key,
    MemoryMappedFileRights.ReadWrite,
    HandleInheritability.Inheritable
    );

    //Debug.WriteLine("Done");
    //Console.WriteLine("Done");

    break;
    }
    catch (Exception e1)
    {
    //Debug.WriteLine("Fail");
    //Debug.WriteLine(e1.Message);

    //Console.WriteLine("Fail");
    //Console.WriteLine(e1.Message);
    }
    }

    System.Threading.Thread.Yield();
    }

    //Debug.WriteLine("");
    //Console.WriteLine("");

    return obj;
    }
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Это NoSQL база данных, стоит ли говорить о причинах рэндома? :)
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    mayorovp: Потому что файлы большие и в память они не влезают, отсюда и частые мапинги в память, открытие и закрытие MMF имеет большие накладные расходы. Что касается глюков, то я использую указатель для работы с этой памятью, так вот где внутрях ядра нарушается учет полученных ссылок, и в какой то момент происходит эксепшн. Свой код я проверил правильно освобождаю указатели, видимо освобождение указателя происходит асинхронно, поэтому они успевают накопиться до критического уровня.
  • ASP.Net Жутчайшая мистика с ThreadAbortException?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Вместе пьете? :)
  • ASP.Net Жутчайшая мистика с ThreadAbortException?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Похоже на выход, удивительно, что это появилось только сейчас.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Denis Antonenko: Мне нравится ваш оптимизм :). Менять позицию блоков в файле нельзя, а random там действительно непредсказуемый т.к. зависит от действий пользователей. Размер буфера мало на что влияет. Есть же тест в топике, попробуйте сами. ) Мне видится один выход, попробовать поюзать WIN API, есть подозрения что FileStream реализован через жо, что не редкость в .Net к сожалению.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Смешно но этот пост как раз появился в результате того, что я переписываю код, что бы отказаться от отображенных в память файлов. MMF годится только тогда, когда вы один раз отрыли файл, и делает много изменений. А когда вы очень часто открываете и закрываете, все это дело работает очень медленно, и к тому же система начинает глючить.
  • Как повысть скорость записи случайных блоков?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Использование FileOptions.WriteThrough ухудшило производительность еще на два порядка. Я даже не дождался результата прошло более двух минут. Отличный ликбез по SSD. Но я же использую .net какой нафиг Trim и привязки к железу? :). FileStream все что мы можем юзать. :)

    >> вычитать все данные, модифицировать, записать на диск.

    Речь идет об очень больших файлах, в которые нужно записывать часто по случайным позициям.
  • ASP.Net Жутчайшая мистика с ThreadAbortException?

    MilkyCoder
    @MilkyCoder Автор вопроса
    Интересный ответ, но прочитав, я не нашел там инфы касаемо моей проблемы. Вы из личного опыта знаете, что при перезагрузке application эти задачи выполнятся гарантированно?
  • Знает ли кто-то алгоритм поиска Google или как относиться к социальному сканеру?

    MilkyCoder
    @MilkyCoder
    Впоtuccar: Вполне, если я действительно чего то хочу, и вдруг бот мне подскажет где это купить, почему нет? Я куплю.