AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2023, 21:08   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,939 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Thumbs up Да мой старый laptop в несколько раз мощнее, чем ваш production server
Интересная статья про оптимизацию.

https://habr.com/ru/articles/496612/
За это сообщение автора поблагодарили: gl00mie (5), fed (5), BOAL (3).
Старый 18.10.2023, 16:06   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,939 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Коллеги, а можете у себя сделать замер и поделиться ?
Я попробовал вот такой вариант на 3 разных серверах (все виртуальные)
X++:
create function dbo.isPrime (@n bigint)
returns int
as
  begin
  if @n = 1 return 0
  if @n = 2 return 1
  if @n = 3 return 1
  if @n % 2 = 0 return 0
  declare @sq int
  set @sq = sqrt(@n)+1 -- check odds up to sqrt
  declare @dv int = 1
  while @dv < @sq 
    begin
	set @dv=@dv+2
	if @n % @dv = 0 return 0
	end
  return 1
  end
GO
declare @dt datetime set @dt=getdate()
select dbo.isPrime(1000000000000037)
select datediff(ms,@dt,getdate()) as ms
GO
Итог 35 +-3 секунды.
Поспрашивал друзей. У одного от 7 до 14 секунд но в основном 8
У другого - 9 секунд.

Как-то тоскливо стало.

У кого еще медленно выполняется ?
За это сообщение автора поблагодарили: sukhanchik (6).
Старый 18.10.2023, 16:20   #3  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Logger Посмотреть сообщение
Итог 35 +-3 секунды.
Поспрашивал друзей. У одного от 7 до 14 секунд но в основном 8
У другого - 9 секунд.

Как-то тоскливо стало.

У кого еще медленно выполняется ?
Не грусти, у одного моего сервера 60+, у остальных 30+
За это сообщение автора поблагодарили: Logger (3).
Старый 18.10.2023, 16:51   #4  
ТРЕНЕР is offline
ТРЕНЕР
Участник
Аватар для ТРЕНЕР
 
599 / 50 (3) ++++
Регистрация: 11.06.2003
Адрес: Москва
10, 10, 11, 12, 17, 25
За это сообщение автора поблагодарили: Logger (3).
Старый 18.10.2023, 17:12   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
  • Микрософтовский OneBox в Azure, D8DSV5 - 7 секунд.
  • Домашний комп с Linux Mint, там SQL Server for Linux (честный, не виртуализованный) Ryzen 4750G - 6.3 секунды ("Cray 3 настолько быстр, что выполняет бесконечный цикл за менее чем 2 секунды (c)")
За это сообщение автора поблагодарили: Logger (3).
Старый 18.10.2023, 19:42   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,939 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от ice Посмотреть сообщение
Не грусти, у одного моего сервера 60+, у остальных 30+
Чо, даже нигде нет быстрее 30 секунд ?
Старый 18.10.2023, 20:24   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,306 / 3540 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
10 секунд на одном сервере (невиртуализирован).
5,5 секунд на другом сервере (невиртуализирован)

Хм... есть над чем призадуматься...

У знакомых на разработческом сервере 9,5 секунд (невиртуализирован). На проде - не знаю - коллега не имеет доступа к нему. Но продовский сервер тоже невиртуализирован
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 18.10.2023 в 20:52.
За это сообщение автора поблагодарили: Logger (3).
Старый 18.10.2023, 20:46   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,939 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
10 секунд на одном сервере (невиртуализирован).
5,5 секунд на другом сервере (невиртуализирован)
Ну хоть один виртуализированный есть ? Интересно как там.
Старый 18.10.2023, 20:48   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,306 / 3540 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Ну хоть один виртуализированный есть ? Интересно как там.
SQL Server? Я конечно не админ всех серверов, но конкретно для AX - MS в явном виде не рекомендует виртуализировать БД SQL Server. Т.е. если АОСы еще могут быть виртуализированы - то БД должна лежать на "железном" сервере. Так что тут... старались не нарушать рекомендации MS
__________________
Возможно сделать все. Вопрос времени
Старый 18.10.2023, 21:07   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,939 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
SQL Server? Я конечно не админ всех серверов, но конкретно для AX - MS в явном виде не рекомендует виртуализировать БД SQL Server. Т.е. если АОСы еще могут быть виртуализированы - то БД должна лежать на "железном" сервере. Так что тут... старались не нарушать рекомендации MS
Дык...
Правила для того и придуманы чтобы их нарушали
У нас вот виртуализированы.
Старый 19.10.2023, 04:13   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,306 / 3540 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Дык...
Правила для того и придуманы чтобы их нарушали
У нас вот виртуализированы.
Просто БД - это самое узкое место системы (диск - это самая тормознутая компонента компьютера). Поэтому делать виртуализацию здесь - это ... заведомо понижать производительность самого тормознутого места. Т.е. конечно - если размеры БД сопоставимы с размером БД демо-данных, либо вся БД полностью умещается в оперативную память сервера - то проблем с виртуализацией нету.

А вот когда размеры БД становятся уже настолько большими, что отсутствие индекса по какому-то полю начинает критически влиять на скорость поиска по этому полю - то тут уже крайне желательно уйти от виртуализации дисков и позволить SQL Server-у работать напрямую с дисками, а не через виртуализацию.
__________________
Возможно сделать все. Вопрос времени
Старый 20.10.2023, 10:26   #12  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Logger Посмотреть сообщение
Чо, даже нигде нет быстрее 30 секунд ?
Нету. Причем тот, что показал 60+ это праймери сервер прода, т.е самый мощный SQL сервер из тех, что тестировал. и он как-то спокойно выдерживает нагрузку 20к-30к+ запросов в секунду (т.е нагрузка цп при этом может не подниматься выше 50%)
Старый 20.10.2023, 23:47   #13  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
У кого еще медленно выполняется?
В моём случае на одинаковых, казалось бы, тестовых виртуальных серверах БД
  • CPU Intel Xeon E5-2698 v4 @ 2.20 GHz, VMware SMBIOS v2.4 - от 8.2 до 8.5 сек.
  • CPU Intel Xeon E5-2698 v4 @ 2.20 GHz, VMware SMBIOS v2.7 - от 11.7 до 14.3 сек.
Точнее версию VMware сейчас сказать не могу, потому что смотрю на это "изнутри". Есть подозрение, что во втором случае - как раз проблема с эмуляцией RDTCS.

На "железном" рабочем сервере
  • CPU Intel Xeon E7-8890 v3 @ 2.50 GHz - от 7.7 до 8.25 сек.

Последний раз редактировалось gl00mie; 20.10.2023 в 23:50.
За это сообщение автора поблагодарили: Logger (3).
Старый 21.10.2023, 14:01   #14  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Xeon(R) E5620 2.40 GHz в среднем 10,5 сек.
Xeon(R) Gold 6248 2.50 GHz в среднем 5,5 сек.
Xeon(R) E7-4850 2.10 GHzв среднем 9,5 сек.

Все - отдельная железяка. Запускал по 5 раз на каждом.
За это сообщение автора поблагодарили: Logger (3).
Старый 21.10.2023, 14:02   #15  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Что-то совпадают с sukhanchik.
А не на одних ли и тех же железках мы это проверяли?
Старый 22.10.2023, 01:42   #16  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,306 / 3540 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Что-то совпадают с sukhanchik.
А не на одних ли и тех же железках мы это проверяли?
Я думаю, что на одних и тех же
Просто у меня есть полноценный доступ только к E7-4850 - который 9,5-10 секунд
__________________
Возможно сделать все. Вопрос времени
Старый 13.12.2023, 19:54   #17  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,939 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
1. Оказывается наши админы уже знали про эту статью и пробовали экспериментировать с настройкой. Выяснились жуткие вещи. В общем, ужос-ужос-ужос.

Похоже, что в соответствие с документацией
Цитата:
«You can disable virtualization of the TSC by adding the setting monitor_control.virtual_rdtsc = FALSE to the virtual machine’s .vmx configuration file. This feature is no longer recommended for use. When you disable virtualization of the TSC, reading the TSC from within the virtual machine returns the physical machine’s TSC value, and writing the TSC from within the virtual machine has no effect. Migrating the virtual machine to another host, resuming it from suspended state, or reverting to a snapshot causes the TSC to jump discontinuously. Some guest operating systems fail to boot, or exhibit other timekeeping problems, when TSC virtualization is disabled. In the past, this feature has sometimes been recommended to improve performance of applications that read the TSC frequently, but performance of the virtual TSC has been improved substantially in current products. The feature has also been recommended for use when performing measurements that require a precise source of real time in the virtual machine. But for this purpose, the pseudoperformance counters discussed in the next section are a better choice.»
Лучше не использовать настройку
Цитата:
monitor_control.virtual_rdtsc = FALSE
У нас пробовали ее включить.
На одном сервере стало криво выдаваться uptime - 69023 дней

Потом оказалось, что служба SQL Agent падала без каких то внятных ошибок по логам серверов. Помогал только перезапуск сервера полностью. Потом оказалось, что время на серверах ведет себя не корректно. Следующие запуски заданий (SQL джобы) переносились далеко вперед.

И завершилось это когда сервер «вылетел» из домена. Произошла рассинхронизация с временем в домене. Отключили дополнительную настройку для ВМ, вернули сервер в домен. И аптайм начал предоставлять актуальную информацию.


2. Быстрый сервер, оказался не таким уж и быстрым. Выяснилось, что для "быстрого" виртуального сервера спустя примерно 1 день, работа скрипта по расчету простых чисел замедлялась с 8 секунд до 28 секунд. После рестарта службы Sql все ускорялось, но лишь временно. На другой день снова медленно работало.
Для медленного сервера после рестарта все ускорялось, но снова замедлялось до 40 секунд уже на 2-м - 3-м запуске скрипта.

3. Если на быстром сервере из SSMS запустить 4 скрипта одновременно, то в паре окошек он будет работать быстро с незначительным замедлением, а в другой паре окошек медленно. Хотя ядер было 20 штук. В общем, наблюдаются какие-то странные эффекты. Похоже есть узкое горлышко, мешающее полноценному параллелизму в работе скрипта. (случайности тут нет, делал много измерений)

4. Попробовал скомпировать C# пример из статьи. Позапускал его на разных серверах. Зависимость только от частоты CPU.
пример (файл VmWareTest.cs) :
X++:
// [url]https://habr.com/ru/articles/496612/[/url]
// [url=https://axforum.info/forums/showthread.php?p=439789#post439789]Да мой старый laptop в несколько раз мощнее, чем ваш production server[/url]
// Эта программа демонстрировала еще более яркое замедление — 
// на «быстрых» машинах она показывает 16-18 миллионов циклов в секунду, 
// тогда как на медленных — полтора миллиона, а то и 700 тысяч. 
// То есть разница составляет 10-20 раз (!!!)

// для компиляции Visual Studio ставить не надо.
// просто запустить
// C:\Windows\Microsoft.NET\Framework64\v4.0.30319>csc.exe VmWareTest.cs

using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
class Program
{
	[DllImport("kernel32.dll")]
	static extern void GetSystemTimePreciseAsFileTime(out FILE_TIME lpSystemTimeAsFileTime);

	[StructLayout(LayoutKind.Sequential)]
	struct FILE_TIME
	{
		public int ftTimeLow;
		public int ftTimeHigh;
	}

	static void Main(string[] args)
	{
		FILE_TIME fileTime; //+fix
		
		for (int i = 0; i < 16; i++)
		{
			int counter = 0;

			var stopwatch = Stopwatch.StartNew();

			while (stopwatch.ElapsedMilliseconds < 1000)
			{
				GetSystemTimePreciseAsFileTime(out fileTime); //+fix
				// GetSystemTimePreciseAsFileTime(out var fileTime); //-fix
				counter++;
			}

			if (i > 0)
			{
				Console.WriteLine("{0}", counter);
			}
		}
	}
}
Вывод
В общем, похоже, что выводы в статье были сделаны поспешно.
Будьте осторожны.
За это сообщение автора поблагодарили: Товарищ ♂uatr (4).
Теги
performance, sql server, vmware

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsax-fico: Parallel accounting according to the “Cost of Sales” and “Nature of Expense” accounting method (4) Blog bot DAX Blogs 0 10.07.2016 08:21
emeadaxsupport: AX Performance - Analyzing key SQL Server configuration and database settings Blog bot DAX Blogs 0 28.09.2015 14:11
emeadaxsupport: AX Performance Troubleshooting Checklist Part 1A [Introduction and SQL Configuration] Blog bot DAX Blogs 0 05.09.2014 21:11
atinkerersnotebook: Configuring Production Control Within Dynamics AX 2012 Downloadable As PDF Blog bot DAX Blogs 0 01.07.2014 22:11
dynamicsaxbi: Better together: Microsoft Dynamics AX 2012 R2 and SQL Server Power View Blog bot DAX Blogs 0 12.12.2012 13:11

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:23.