powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ANN: видео о мифе эффективности параллельной вставки
25 сообщений из 91, страница 1 из 4
ANN: видео о мифе эффективности параллельной вставки
    #39420012
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал видео.
В этом видео - тест параллельной вставки данных в одну таблицу. Теория и практика развеивают мифы. Сравнение серверов Firebird 2.5, 3.0, Classic, SuperClassic, SuperServer.

Тут если вставить ссылку на ютуб, она вроде ембеддится, ну и ладно. Вопросы?
YouTube Video
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420023
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 15 марта 2017 г. 14:54:12:

KdvВопросы?Primary Key и вообще индексы есть?
(ютуб зарезан)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420042
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

только ПК. таблица с целочисленными типами, запись 70-80 байт.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420045
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там на 15 минуте ошибка в тексте, AFAIU -
должно быть "отрыв от SC и CS".

Описание/код вставлятора есть где-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420046
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, досмотрел до конца,
тогда код не нужен, пожалуй. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420052
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 15 марта 2017 г. 15:15:17:

Kdv> только ПКну дык! сериализация ж никуда не делась.
проверь без него.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420053
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамОписание/код вставлятора есть где-то?
сгенерированы скрипты для вставки, потом "запускатор" стартует партию ISQL с этими скриптами.
Гаджимурадов РустамТам на 15 минуте ошибка в тексте, AFAIU -
должно быть "отрыв от SC и CS".
черт, да, конечно.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420078
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийну дык! сериализация ж никуда не делась.
проверь без него.
без него будет то же самое, только побыстрее. Собственно, Ковязин еще в 2015 году делал отдельный тест влияния "коротких" и "больших" ПК на вставку, и на миллионе записей и целочисленным ПК разница где-то в 2.5 раза, причем деградации нет.
А вот на строковом индексе - деградация идет почти сразу, уже с десятков тысяч записей.

Тест, конечно, надо перепроводить на 3.0.2, и у меня была мысль проверить совсем без индексов. Но пока повтор теста на втором месте по важности.

Кроме того, hvlad сказал, что в отличие от всего остального SuperServer 3.0 будет пытаться искать другую свободную страницу, если наткнется на лок. Но я это обдумывал, и пришел к выводу, что нифига это не даст, кроме вероятной "фрагментированности" страниц (которую тоже надо будет проверить при повторении теста).
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420093
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

а можно к этому видео, размещённом на ibase.ru приложить скрипты самого теста? Чтобы любой желающий мог попробовать у себя.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420104
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvНо я это обдумывал, и пришел к выводу, что нифига это не даст, кроме вероятной "фрагментированности" страниц (которую тоже надо будет проверить при повторении теста).Плохо обдумывал
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420112
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad> Плохо обдумывал

А что в 2.5 происходит при локе, ждёт или ищет другую?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420113
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

дык в 2.5 страницы по другому выделяются - одна за одной. А в 3.0 может выделяться пачками (эсктентами)
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420118
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис приложить скрипты самого теста?
может быть. А может и нет, в силу специфики "обвязки" для запуска isql. В минимальном варианте можно проверить на 1 и двух коннектах:
- создать таблицу
- сгенерить в ней млн записей (хоть ибэкспертом)
- экспортнуть эти данные в текст, это будет скрипт1
- разрезать скрипт1 пополам, это будет скрипт2
- померять время на 1м isql и на двух запущеных хоть с интервалом в 1 сек.

это так, чтобы не ждать.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420131
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисдык в 2.5 страницы по другому выделяются - одна за одной. А в 3.0 может выделяться пачками (эсктентами)Именно. И поиск свободного места\не залоченной страницы осуществляется в пределах текущего экстента.
Не самый эффективный алгоритм, тут есть что улучшать.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420134
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvтолько ПК
В следующем тесте добавь один или два.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39420144
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на днях уж посмотрел. И, вроде, даже лайкнул. :)
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421459
Romanzek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,
интересует:
1. Сервер однопроцессорный или нет?
2. Диски SSD или железка?

Можно ли получить ваш набор в виде, годном для запуска?
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421567
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanzekСервер однопроцессорный или нет?
какая разница, интересно? Особенно если посмотреть на результаты 1, 2 и 4 коннектов. Ядер-то 12.
И, сейчас точно не могу сказать, но явно процессор один, 6-ядерные на серверах вроде не бывают.
RomanzekДиски SSD или железка?
вроде RAID из SATA-дисков. Точно не SSD.

скрипты возможно дадим, но позже. Перепроверять на 3.0.2 будем.
Однако, мне интересно - что вы хотите получить перепроверкой теста у себя? То есть, вы хотите сравнить с приведенными результатами, или вы ожидаете, что результаты на разных архитектурах будут как-то сильно отличаться от наших результатов?
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421587
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 17 марта 2017 г. 14:57:23:

Kdv> 6-ядерные на серверах вроде не бывают.а для кого ж Intel 6-ядерные Xeon'ы клепает?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421594
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv6-ядерные на серверах вроде не бывают.у нас пара таких в сервере.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421686
Romanzek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvRomanzekСервер однопроцессорный или нет?
какая разница, интересно? Особенно если посмотреть на результаты 1, 2 и 4 коннектов. Ядер-то 12.
И, сейчас точно не могу сказать, но явно процессор один, 6-ядерные на серверах вроде не бывают.

Разница может быть очень существенной. Так как CFS ;-)
Более того, там еще от модели процессора зависит поведение планировщика.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421703
Romanzek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы кстати тоже проводили подобные тесты. Но не с целью доказать, что производительность в нескольких потоках снижается - это мы и так понимаем. Наша цель была нащупать предел, после которого наступает серверный коллапс. То есть производительность падает до нуля (что и случалось у нас в продакшине). Но, к сожалению, синтетикой это нащупать оказалось крайне тяжело. Пришлось делать полноценный нагрузочный тест в приложении.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421735
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

У меня c FB3 SS получилась немного другая картина.

6950X (10C:20T)/128GB/Win10.

FB 3.0.2.32692 x64 SuperServer.

DefaultDbCachePages = 200000
MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

База на RAM диске. Страница 16KB. FW: OFF.

Тестовая таблица - 1 колонка (BIGINT, PK). Есть триггер.

Перед каждым запуском база приводится к исходному состоянию.

На момент проведения этих тестов FB уже накрутил 200 часов (User Time), но перегружать я его не буду.

Вставка 1 млн записей:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
потоков  время(сек)
1           128
2            93
4            51
8            36
10           34
20           33

Вставка 10 млн записей (пробовал только один раз):
Код: plaintext
1.
2.
3.
4.
5.
6.
1          1306
2           640
4           391
8           319
10          315
20          313

Код теста на C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
using System;
using System.IO;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using structure_lib=lcpi.lib.structure;
using xdb=lcpi.data.oledb;

namespace Sample_024{
////////////////////////////////////////////////////////////////////////////////
//class Program

class Program
{
 public const string c_prog_arg__cn_str       = "cn_str";
 public const string c_prog_arg__thread_count = "thread_count";
 public const string c_prog_arg__rec_num      = "rec_num";
 public const string c_prog_arg__log_file     = "log_file";
 public const string c_prog_arg__summary_file = "summary_file";

 //-----------------------------------------------------------------------
 private static int Main()
 {
  int result = 0;

  try
  {
   result=Exec();
  }
  catch(Exception e)
  {
   ++result;
   Console.WriteLine("ERROR: {0}",e.Message);
  }//catch

  return result;
 }//Main

 //-----------------------------------------------------------------------
 private static int Exec()
 {
  int errCount=0;

  var cmdArgs = new structure_lib.t_command_line_parser('/');

  cmdArgs.reg_arg
   (c_prog_arg__cn_str,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__thread_count,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__rec_num,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__log_file,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__summary_file,
    structure_lib.t_command_line_argument_flags.with_value);

  //-----------------------------------
  cmdArgs.parse(Environment.CommandLine);

  //-----------------------------------
  string Arg_log_file
   =cmdArgs.get(c_prog_arg__log_file,true).Value;

  var log=new ProgramLog(Arg_log_file);
 
  try
  {
   log.Send("Hello from test!");

   //-----------------------------------
   var startupData=new StartupData(cmdArgs);

   log.Send("CommandLine: {0}",Environment.CommandLine);
   log.Send("Threads    : {0}",startupData.m_arg__thread_count);
   log.Send("Records    : {0}",startupData.m_arg__rec_num);

   //-----------------------------------
   log.Send("Try to connect to database ...");

   using(var cn=new xdb.OleDbConnection(startupData.m_arg__cn_str))
   {
    cn.Open();

    using(var tr=cn.BeginTransaction())
    {
     var cmd=new xdb.OleDbCommand("delete from TEST_SEQUENTIAL_MOVE",cn,tr);

     cmd.ExecuteNonQuery();
  
     tr.Commit();
    }//using tr

    log.Send("OK!");
   }//using cn

   //---------------------------------- create workers
   log.Send("Create workers ...");

   var workers=new ThreadWorker[startupData.m_arg__thread_count];
  
   {
    var generator=new GeneratorSeq(startupData);

    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
     workers[i]=new ThreadWorker(startupData,i,generator);
   }//local

   //----------------------------------
   log.Send("Create threads ...");

   var threads=new System.Threading.Thread[startupData.m_arg__thread_count];
   
   DateTime startTS;

   try
   {
    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
    {
     var t=new System.Threading.Thread(workers[i].Run);

     t.Start();

     workers[i].m_InitEvent.WaitOne();

     threads[i]=t;
    }//for i

    startTS=DateTime.Now;

    startupData.m_StartEvent.Set();
   }
   finally
   {
    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
    {
     if(!Object.ReferenceEquals(threads[i],null))
     {
      log.Send("Wait thread {0}",i+1);

      threads[i].Join();

      if(!Object.ReferenceEquals(workers[i].m_exc,null))
      {
       ++errCount;

       log.Send("ERROR: {0} - {1}",workers[i].m_exc.Source,workers[i].m_exc.Message);
      }
     }//if
    }//for i
   }//finally

   var endTS=DateTime.Now;

   long duration=(long)(endTS-startTS).Duration().TotalSeconds;

   log.Send("Duration: {0} second(s).",duration);

   //----------------------------------
   {
    ulong n=0;

    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
    {
     n+=workers[i].m_cRecords;

     log.Send("Thread [{0}]: {1:###} record(s)",i,workers[i].m_cRecords);
    }
   
    if(n!=(ulong)startupData.m_arg__rec_num)
    {
     throw new ApplicationException(string.Format("Wrong work. Inserted {0}. Expected {1}",
                                    n,
                                    startupData.m_arg__rec_num));
    }//if
   }//local
    
   //----------------------------------
   using(var sf=new StreamWriter(cmdArgs.get(c_prog_arg__summary_file,true).Value,true))
   {
    sf.WriteLine("{0}\t{1}\t{2}",
                 startupData.m_arg__rec_num,
                 startupData.m_arg__thread_count,
                 duration);

    sf.Close();
   }
  }
  finally
  {
   log.Close();
  }//finally

  return errCount;
 }//Exec
}//class Program

////////////////////////////////////////////////////////////////////////////////
//class ProgramLog

class ProgramLog
{
 public ProgramLog(string logFileName)
 {
  m_log_file=new StreamWriter(logFileName,false);
 }

 public void Send(string s,params object[] args)
 {
  string line=string.Format(s,args);

  line=Helper__BuildTS()+" "+line;

  Console.WriteLine("{0}",line);

  m_log_file.WriteLine("{0}",line);
 }//Send

 public void Close()
 {
  m_log_file.Close();
 }//Close

 private static string Helper__BuildTS()
 {
  var ts=DateTime.Now;

  return ts.ToString("[dd.mm.yyyy hh:mm:ss]");
 }

 private StreamWriter m_log_file;
};//class ProgramLog

////////////////////////////////////////////////////////////////////////////////
//class StartupData

class StartupData
{
 public readonly string m_arg__cn_str;
 public readonly uint   m_arg__thread_count;
 public readonly long   m_arg__rec_num;

 public readonly ManualResetEvent m_StartEvent;

 public StartupData(structure_lib.t_command_line_parser cmdArgs)
 {
  m_arg__cn_str=cmdArgs.get(Program.c_prog_arg__cn_str,true).Value;

  //-----------------------------------
  m_arg__thread_count
   =uint.Parse(cmdArgs.get(Program.c_prog_arg__thread_count,true).Value);

  if(m_arg__thread_count==0)
   throw new ApplicationException("Incorrect number of threads");

  //-----------------------------------
  m_arg__rec_num
   =long.Parse(cmdArgs.get(Program.c_prog_arg__rec_num,true).Value);
 
  if(m_arg__rec_num<=m_arg__thread_count)
   throw new ApplicationException("Incorrect number of records");

  //-----------------------------------
  m_StartEvent=new ManualResetEvent(false);
 }//StartupData

 //------------------------------------
 public bool GenNum(out long v)
 {
  v=Interlocked.Increment(ref m_rec_num);

  if(m_arg__rec_num<v)
   return false;

  return true;
 }//GenNum
   
 //------------------------------------
 private long m_rec_num=0;
};//class StartupData

////////////////////////////////////////////////////////////////////////////////
//interface Generator

interface Generator
{
 bool Gen(out long v);
};//interface Generator

 ////////////////////////////////////////////////////////////////////////////////
//class GeneratorSeq

class GeneratorSeq:Generator
{
 public GeneratorSeq(StartupData startupData)
 {
  m_StartupData=startupData;
 }

 //interface -------------------------------------------------------------
 public bool Gen(out long v)
 {
  return m_StartupData.GenNum(out v);
 }//Gen

 private readonly StartupData m_StartupData;
};//class GeneratorSeq

////////////////////////////////////////////////////////////////////////////////
//class ThreadWorker

class ThreadWorker
{
 public Exception m_exc=null;

 public readonly StartupData m_StartupData;

 public readonly Generator m_Generator;

 public readonly ManualResetEvent m_InitEvent;

 public readonly uint m_ThreadIndex;

 public ulong m_cRecords=0;

 public ThreadWorker(StartupData startupData,
                     uint        index,
                     Generator   generator)
 {
  m_StartupData=startupData;

  m_Generator=generator;

  m_InitEvent=new ManualResetEvent(false);

  m_ThreadIndex=index;
 }//ThreadWorker

 public void Run()
 {
  try
  {
   using(var cn=new xdb.OleDbConnection(m_StartupData.m_arg__cn_str))
   {
    cn.Open();

    using(var tr=cn.BeginTransaction())
    {
     using(var cmd=new xdb.OleDbCommand(null,cn,tr))
     {
      cmd.CommandText=
       "insert into TEST_SEQUENTIAL_MOVE (ID) values(:id)";

      cmd.Prepare();

      m_InitEvent.Set();

      m_StartupData.m_StartEvent.WaitOne(); //infinite!

      long v;
  
      while(m_Generator.Gen(out v))
      {
       cmd[0].Value=v;

       cmd.ExecuteNonQuery();

       ++m_cRecords;
      }//while
     }//using cmd
     tr.Commit();
    }//using tr
   }//using cn
  }
  catch(Exception e)
  {
   m_exc=e;
  }//catch
 }//Run
};//class ThreadWorker

////////////////////////////////////////////////////////////////////////////////
}//namespace Sample_024



run1.bat - запуск теста
Код: plaintext
1.
2.
copy /Y d:\Database\FB_03_0_0\__clear\IBP_TEST_FB30_D3.GDB d:\Database\ram\IBP_TEST_FB30_D3.GDB

bin\vs2017_net46.2_Release\Sample_024.exe /cn_str "provider=LCPI.IBProvider.3;location=localhost:d:\database\ram\ibp_test_fb30_d3.gdb;user id=GAMER;password=vermut;dbclient_type=fb.direct" /thread_count %1 /rec_num %2 /log_file _logs\result_%1_%2.log /summary_file _logs\summary.log

run.bat - запуск группы тестов
Код: plaintext
1.
2.
3.
4.
5.
call run1.bat 1  %1
call run1.bat 2  %1
call run1.bat 4  %1
call run1.bat 8  %1
call run1.bat 10 %1
call run1.bat 20 %1

Лог запуска для 10млн записей и 8 потоков
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
[17.09.2017 04:09:48] Hello from test!
[17.09.2017 04:09:48] CommandLine: bin\vs2017_net46.2_Release\Sample_024.exe  /cn_str "provider=LCPI.IBProvider.3;location=localhost:d:\database\ram\ibp_test_fb30_d3.gdb;user id=GAMER;password=vermut;dbclient_type=fb.direct" /thread_count 8 /rec_num 10000000 /log_file _logs\result_8_10000000.log /summary_file _logs\summary.log
[17.09.2017 04:09:48] Threads    : 8
[17.09.2017 04:09:48] Records    : 10000000
[17.09.2017 04:09:48] Try to connect to database ...
[17.09.2017 04:09:48] OK!
[17.09.2017 04:09:48] Create workers ...
[17.09.2017 04:09:48] Create threads ...
[17.09.2017 04:09:49] Wait thread 1
[17.15.2017 04:15:08] Wait thread 2
[17.15.2017 04:15:08] Wait thread 3
[17.15.2017 04:15:08] Wait thread 4
[17.15.2017 04:15:08] Wait thread 5
[17.15.2017 04:15:08] Wait thread 6
[17.15.2017 04:15:08] Wait thread 7
[17.15.2017 04:15:08] Wait thread 8
[17.15.2017 04:15:08] Duration: 319 second(s).
[17.15.2017 04:15:08] Thread [0]: 1113156 record(s)
[17.15.2017 04:15:08] Thread [1]: 1147915 record(s)
[17.15.2017 04:15:08] Thread [2]: 1183818 record(s)
[17.15.2017 04:15:08] Thread [3]: 1222949 record(s)
[17.15.2017 04:15:08] Thread [4]: 1263065 record(s)
[17.15.2017 04:15:08] Thread [5]: 1305448 record(s)
[17.15.2017 04:15:08] Thread [6]: 1353977 record(s)
[17.15.2017 04:15:08] Thread [7]: 1409672 record(s)

Возможно что-то здесь не так.

Но у меня нагрузочное тестирование в 4 потока идет ~16 часов. А в 8 потоков - ~10 часов. Тесты разные, но большая часть параллельно работает с одними и теми же таблицами.

В 4 потока можно запускать сразу два экземпляра тестов (для разных баз данных) - те же 16 часов. Плюс минус.

Естественно - нагрузочные тесты тоже на RAM-диске.

Так что цифры вышеприведенного теста вроде адекватные.
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421771
Romanzek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий,

Интересные результаты, спасибо
Будем теперь с нетерпением ждать релиза нашей тройки :)
...
Рейтинг: 0 / 0
ANN: видео о мифе эффективности параллельной вставки
    #39421774
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Romanzek!
You wrote on 17 марта 2017 г. 17:07:05:

Romanzek> Будем теперь с нетерпением ждать релиза нашей тройки :)обо что речь?
какой тройки?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 91, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ANN: видео о мифе эффективности параллельной вставки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]