LINUX.ORG.RU

8
Всего сообщений: 124

Ubuntu 19.04. Включен ли TRIM по-умолчанию?

Когда-то где-то читал, что на Ubuntu по-умолчанию включен TRIM для ssd. Как узнать, включен ли? В /etc/cron… ничего, связанного с TRIM не нашёл.

 , , ,

el-d ()

Вышел GameMode 1.3, оптимизатор производительности игр в Linux

GameMode может отключать режимы энергосбережения, менять параметры распределения ресурсов и планировки задач (CPU governor и SCHED_ISO), перестраивать приоритеты I/O, блокировать скринсейвер, включать performance-режимы для GPU NVIDIA и AMD, разгонять GPU NVIDIA (overclocking), запускать скрипты с пользовательскими оптимизациями.

Использование:

gamemoderun ./game

Конфигурация хранится в файле gamemode.ini

 , , ,

alexferman ()

Перенос нагрузки с ЦПУ

Всем привет.

В последнее время проц уж слишком начал грузится. Приложения начали фризить, анимации стали дерганными а курсор так и вовсе бывает на секунд 5-10 начинает тормозить. Искал виновников, большую часть нагрузки занимают компоненты рабочей среды и фаерфокс. Второй требуется по работе а первый хз как решить(пробовал mx linux, solus(все три) минт и deepin)

ОЗУ много(16 гб. Даже не знаю куда девать еще как минимум 6...), проц i3 2120 , ssd 120gb и 950m. Может как то получится перекинуть нагрузку с цпу на озу и/или видеокарту?

Не надо предложений оверклокинга и фраз «купи норм проц аля i5 2500k» пожалуйста.

Спасибо

 , ,

JavaUserOnly ()

Эффективная оптимизация. Что такое Cython.

За последнюю неделю почему-то часто всплывал этот вопрос, поэтому распишу всё сразу в одном месте. Описывать буду на примере питона, но общие принципы применимы ко многим языкам. Итак.

Часть первая. Правила эффективной оптимизация

  1. Не думайте об оптимизации пока код не дописан. Вообще! Думайте, как написать код проще и понятнее. А про оптимизацию даже не вспоминайте, пока не запустите код. Когда код запустится, проверьте насколько быстро он отрабатывает. Если он достаточно быстр — задача решена, ничего делать не нужно. Точка. И только если код отрабатывает медленнее, чем требуют условия задачи — начинайте думать об оптимизации.
  2. Попробуйте JIT, например PyPy, если условия это позволяют (apt-get install pypy && pypy yourprogram.py). Когда не хватает совсем немного производительности — JIT ускорит в несколько раз, и этого может быть достаточно. И тогда всё, задача решена. Только если это не сработало, переходите к фактической оптимизации кода.
  3. Пройдитесь профайлером. python -m cProfile yourprogram.py Никогда не оптимизируйте код без профилирования. По профилю определите самые медленные куски кода. Если код слишком большой — разбейте на функции. Не нужно бросаться переписывать всё подряд. Изолируйте наиболее прожорливые куски кода, и работайте только с ними.
  4. Выполните высокоуровневую оптимизацию найденных медленных кусков кода. Используйте более быстрые библиотеки: gmpy2 вместо встроенной длинной арифметики, python-regex вместо встроенного re, numpy для матричных вычислений, и т.д. Замените dict на list. Вынесите все возможные вычисления за циклы. Наконец, оптимизируйте алгоритм, или попробуйте найти ему более быстрый аналог. Если что-то получилось — goto 2.
  5. Cython. Расставьте типы, пройдитесь профайлером, посмотрите annotate cython-а, какой код сгенерирован, какие куски можно ускорить (он их расцвечивает)... Ещё раз подчёркиваю, низкоуровневая оптимизация — это последний этап, когда другие варианты исчерпаны.

Часть вторая. Cython

Если мы всё-таки дошли до cython-а, то... что же он такое?

Cython - это транслятор из питона в Си. Всё. Он просто генерирует код на си.

Если в файле mymodule.py написать:

def somefunc(x):
    y = x*42
    return y
и запустить cython mymodule.py то он том же каталоге сгенерирует mymodule.c, в котором будет что-то вроде:
static PyObject *__pyx_pf_8mymodule_somefunc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_v_y = NULL, *__pyx_r = NULL, *__pyx_t_1 = NULL;

  __pyx_t_1 = PyNumber_Multiply(__pyx_v_x, __pyx_int_42);
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_y = __pyx_t_1;
  __pyx_t_1 = 0;

  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_y);
  __pyx_r = __pyx_v_y;

  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XGIVEREF(__pyx_r);
  return __pyx_r;
}
И, хотя это редко делают вручную, этот код можно собрать обычным компилятором: gcc -shared -O3 -o mymodule.so mymodule.c `python-config --cflags --ldflags`. Нигде в остальном коде ничего менять не надо. Обычный «import mymodule» загрузит бинарный module.so так же, как загрузил бы питоновый mymodule.py.

Да, cython позволяет скомпилировать питонокод. Но никаких глубоких интеллектуальных оптимизаций cython не делает. Он просто вызывает из libpython.so питоновые функции, такие как PyNumber_Multiply(). Без питона этот код работать не будет. (в принципе, его можно собрать статически, но обычно это не имеет смысла — реальная программа всё равно будет использовать кучу внешних либ, и ещё одна библиотека роли не сыграет)

Так как все вызовы питоновых функций остались, то просто сборка cython-ом большого ускорения не даст, может, раза в два. Но! Cython-у можно указать, где использовать сишные типы вместо питоновых! В примере выше, если расставить типы:

cdef double somefunc(double x):
    cdef double y = x*42
    return y
то cython mymodule.pyx сгенерирует в mymodule.c код:
static double __pyx_f_8mymodule_somefunc(double __pyx_v_x) {
  double __pyx_v_y, __pyx_r;

  __pyx_v_y = (__pyx_v_x * 42.0);

  __pyx_r = __pyx_v_y;

  return __pyx_r;
}
По сути, это чистый код на си. Быстрее некуда. А с параметром --annotate cython -a mymodule.pyx дополнительно сгенерирует «mymodule.html», в котором раскрасит код цветами. По нему легко смотреть, какие части кода ещё стоит оптимизировать. Но так как после расстановки типов обычным питоном такой код уже не запустится, его традиционно сохраняют в файле с расширением .pyx вместо .py.

Вот так, не написав ни одной строчки на си, а просто расставив типы, медленный питоновый код превращается в быстрый сишный.

В целом, это всё.

PS: Это не все возможности cython-а. В нём можно использовать плюсовые типы, например std::vector. Причём можно даже писать: cdef vector[double] sqrs = [x*x for x in somelist] и всё преобразование из питоновых типов в плюсовые и обратно cython возмёт на себя. Можно вызывать и внешний код на си (cdef extern from).

Есть и более тонкие оптимизации, например мелким функциям можно расставлять inline (хотя с этим и gcc обычно справляется). А ещё код, не использующий питоновые объекты, не блокирует GIL! А значит отлично подходит для многопоточных вычислений. В cython-е есть и модули для параллельных вычислений.

Да и сами .pyx файлы обычно компилируются не руками, а как часть скрипта distutils/setuptool. А в отладочных целях import pyximport; pyximport.install() и после этого обычный import mymodule сможет импортировать не только .py, но и .pyx файлы.

Полезные ссылки

Итого: Оптимизировать надо только когда иначе нельзя, и только то, что необходимо. Низкоуровневая оптимизация делается в последнюю очередь. Но если мы её таки делаем, то cython позволяет сделать её максимально легко — просто расставив типы.

PPS: Питон в этом не уникален. Почти во всех языки есть возможности низкоуровневой оптимизации, расширения на си через FFI/JNI/и т.д. Есть unsafe код в rust и c#. Даже в паскале и си есть ассемблерные вставки. Не удивительно, что кто-то придумал аналог и для питона. Так что эти же принципы оптимизации применимы и к другим языкам.

 , , , ,

pynonymous ()

Выбор дистрибутива

Здравствуйте.

Я новоприбывший пользователь линукс. До этого стояла (и стоит для не переносимых на линукс приложений) винда семёрка. Последней каплей стало когда для веб программирования запустил браузер (хромиум), фотошоп(сs6) и саблайм и приложения словно в эпилептическом припадке то «отвечали», то «не отвечали» каждые пол секунды. В течении почти месяца мучался с проблемой после установки дистрибутива(перепробовал все вплоть до Федоры кроме генту, арча). Вылетала ошибка: попытка чтения или записи вне диска hd0. Проблему решил установкой бута в самое начало(перед виндой) и восстановлением диска виндоус с загрузочного. Сейчас сижу на минте 19.1 32 бита, синнамон, однако после некоторых оптимизационных операций(оптимизации свапа, установки zen-kernel(кажется так) и чистки сервисов) желаемая отзывчивость не появилась =(

Вот вопрос: какой из дистрибутивов даст максимальную производительность/неплохие еффекты и анимации(плавный скролл/работа с горячими углами(уже привык к ним и не хочу отвыкать))

Убунту(и ее ДЕ) с слакой не предлагайте. Пробовал и не понравилось

Железо: Pentium g840, 2gb ram, жесткий терабайтник

Софт: Текстовый редактор для веба(саблайм или атом), браузер (хромиум, фф, может брейв), photoshop, либрофис, ifranz(или его аналоги) и читалка.

P.S. Было бы отлично если вы подскажете лучшую версию(дистра и/или программ)

 ,

Tanik ()

Процессору можно подсказать наивероятный переход?

Наткнулся в расте на likely/unlikely. Получается в рантайме можно вручную направить CPU в нужный бранч, чтобы он не подключал свои вероятностные нейронки и прочий кремниевый хлам?

А вот интересно, в тех же JIT-ах делается подобная оптимизация, в том же HotSpot джавы?

 , ,

foror ()

Оптимизация работы PostgreSQL 9.6

Такой вопрос.

Есть примерно 100 баз 1С. Камин 5.5.

В каждой работает по 2-3 пользователя. Нельзя сказать чтобы Камин была легковесной, но если сравнивать ее работу с LOR, то она тормозит.

Виртуалка сервера лежит на SSD, всего ОЗУ 16 гигов, 8 ядер проца, общий объем баз примерно 80 гигабайт.

Где то я читал что ЛОР использует такой объем ОЗУ, чтобы туда вся база помещалась.

Может нам так поступить? Добавить ОЗУ до уровня скажем 64 гигабайта?

https://pgtune.leopard.in.ua/ пользуюсь. В общем сейчас все настроено в соответствии с ним. Сам PostgreSQL из репа http://1c.postgrespro.ru/deb/, с оптимизацией под 1С.

Надо сказать, что время выхода пользователей на «работу» предсказуемо.

Известно, что последние числа месяца и середина месяца самые горячие.

Вот только что мне жаловались, что медленно формируются платежки.

Ну казалось бы, платежки 2 раза в месяц формируются, и занимает это по словам бухгалтера аж 5 минут! В общем то я посмотрел, меньше минуты формируется печатная форма на 200 листов.

Можно сказать, что все это закидоны и сидеть на попе ровно, но что то подвигало меня написать этот пост. Наверное, потому что PostgreSQL это тема, и вообще будущее для 1С.

Сервер Debian 9, VMWare ESX 6.0, SSD, 8 ядер AMD, 16 гигабайт ОЗУ.

 , , ,

Shulman ()

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

Привет всем! Давно такой вопрос мучал меня. Влияет ли избыточное создание переменных на производительность? Допустим я в Python буду руководствоваться принципам красоты кода, и буду разбивать длинные выражения на несколько более мелких, создавая избыточные переменные, это на быстродействии не скажется? И вообще, этот случай на всех языках программирования на быстродействии не скажется? Например такой код:

def egg(a, b, c):
   some = some1.some2.some3(a)
   todo = some.fucking1.fucking2.fucking3(b)
   .... // и т.д. :)
   return fucking_finish

 , , , ,

dimcoin ()

Приложение с номером процесса 527 после загрузки. Что оптимизировано?

Здравствуйте!

На GNU GuixSD с ядром Linux 4.17.2-gnu #1 SMP 1 x86_64 GNU/Linux после загрузки и входа в систему в рабочий стол XFCE я запускаю терминал и запускаю процесс tor.

Этот процесс имеет номер 527

$ ps aux| grep tor
...
user         527 18.5  1.1  67136 39228 pts/0    S+   15:23   0:03 tor

На других ОС номер процесса значительно выше: 2000-3000.

Подскажите, как отключать лишнее?

 , ,

znavko ()

SSD: динамический или фиксированный виртуальный HDD

Здравствуйте! Хочу отдать SSD под виртуальную машину, но не могу сообразить какой вариант будет оптимальным для работы SSD: динамический жёсткий диск или фиксированный на весь SSD (15% оставить свободным контролеру для манёвра)?

 , ,

vrnd ()

Оптимизация в clang

Есть файл foo.c:

#include <stdio.h>

static inline void foo(){
	static _Bool firstTime = 1;
	if (firstTime){
		puts("First time!");
		firstTime = 0;
	} else {
		puts("Once again.");
	}
}

int main(){
	foo();
	foo();
	return 0;
}
после выполнения clang -O3 -S -emit-llvm foo.c -o foo.ll, создаётся файл foo.ll:
; ModuleID = 'foo.c'
source_filename = "foo.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@foo.firstTime = internal unnamed_addr global i1 false, align 1
@.str = private unnamed_addr constant [12 x i8] c"First time!\00", align 1
@.str.1 = private unnamed_addr constant [12 x i8] c"Once again.\00", align 1

; Function Attrs: nounwind sspstrong uwtable
define i32 @main() local_unnamed_addr #0 {
  %1 = load i1, i1* @foo.firstTime, align 1
  br i1 %1, label %4, label %2

; <label>:2:                                      ; preds = %0
  %3 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0)) #2
  store i1 true, i1* @foo.firstTime, align 1
  br label %9

; <label>:4:                                      ; preds = %0
  %5 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #2
  %6 = load i1, i1* @foo.firstTime, align 1
  br i1 %6, label %9, label %7

; <label>:7:                                      ; preds = %4
  %8 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0)) #2
  store i1 true, i1* @foo.firstTime, align 1
  br label %11

; <label>:9:                                      ; preds = %2, %4
  %10 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #2
  br label %11

; <label>:11:                                     ; preds = %7, %9
  ret i32 0
}

; Function Attrs: nounwind
declare i32 @puts(i8* nocapture readonly) local_unnamed_addr #1

attributes #0 = { nounwind sspstrong uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind }

!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!"clang version 6.0.0 (tags/RELEASE_600/final)"}
Как сделать так чтобы, в файле foo.ll было что-то вроде следующего:
; ModuleID = 'foo.c'
source_filename = "foo.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@.str = private unnamed_addr constant [12 x i8] c"First time!\00", align 1
@.str.1 = private unnamed_addr constant [12 x i8] c"Once again.\00", align 1

; Function Attrs: nounwind sspstrong uwtable
define i32 @main() local_unnamed_addr #0 {
  %1 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
  %2 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
  ret i32 0
}

; Function Attrs: nounwind
declare i32 @puts(i8* nocapture readonly) local_unnamed_addr #1

attributes #0 = { nounwind sspstrong uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }

!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!"clang version 6.0.0 (tags/RELEASE_600/final)"}

 , ,

Taetricus ()

Гуру! Помогите настроить сервер!

Здравствуйте, о глубокоуважаемые форумчане! Помогите нубу настроить сервер. Сам я ничего не знаю, по русски говоря - ни в зуб ногой. Сайт тормозит, тормозит серьезно, время отклика составляет до 3 с ((((

Напишите, что сделать, я сделаю и выложу результат... Я более чем уверен, что ваши советы помогут !

VPS Six cores 24 GB, debian 9, apache

---------------------- My.cnf ---------

  • !includedir /etc/mysql/conf.d/
  • !includedir /etc/mysql/mariadb.conf.d/
  • [mysqld]
  • slow_query_log = /var/log/mysql/mysql-slow.log
  • long_query_time = 1
  • key_buffer_size = 8192M
  • sort_buffer_size = 64M
  • query_cache_type = 1
  • query_cache_size = 256M
  • query_cache_limit = 4M
  • table_open_cache = 2048
  • query_cache_limit = 32M
  • thread_cache_size = 16
  • max_heap_table_size = 128M
  • tmp_table_size = 128M

---------------------- Mysqltuner ---------

  • [--] Skipped version check for MySQLTuner script
  • [OK] Logged in using credentials from debian maintenance account.
  • [OK] Currently running supported MySQL version 10.1.26-MariaDB-0+deb9u1
  • [OK] Operating on 64-bit architecture
  • -------- Log file Recommendations ------------------------------------------------------------------
  • [--] Log file: /var/log/mysql/error.log(0B)
  • [OK] Log file /var/log/mysql/error.log exists
  • [OK] Log file /var/log/mysql/error.log is readable.
  • [!!] Log file /var/log/mysql/error.log is empty
  • [OK] Log file /var/log/mysql/error.log is smaller than 32 Mb
  • [OK] /var/log/mysql/error.log doesn't contain any warning.
  • [OK] /var/log/mysql/error.log doesn't contain any error.
  • [--] 0 start(s) detected in /var/log/mysql/error.log
  • [--] 0 shutdown(s) detected in /var/log/mysql/error.log
  • -------- Storage Engine Statistics -----------------------------------------------------------------
  • [--] Status: +Aria +CSV +InnoDB +MEMORY +MRG_MyISAM +MyISAM +PERFORMANCE_SCHEMA +SEQUENCE
  • [--] Data in MyISAM tables: 530M (Tables: 32)
  • [--] Data in InnoDB tables: 416K (Tables: 20)
  • [OK] Total fragmented tables: 0
  • -------- Security Recommendations ------------------------------------------------------------------
  • [OK] There are no anonymous accounts for any database users
  • [OK] All database users have passwords assigned
  • [--] There are 612 basic passwords in the list.
  • -------- CVE Security Recommendations --------------------------------------------------------------
  • [OK] NO SECURITY CVE FOUND FOR YOUR VERSION
  • -------- Performance Metrics -----------------------------------------------------------------------
  • [--] Up for: 15h 33m 58s (722K q [12.888 qps], 27K conn, TX: 21G, RX: 1G)
  • [--] Reads / Writes: 97% / 3%
  • [--] Binary logging is disabled
  • [--] Physical Memory : 23.6G
  • [--] Max MySQL memory : 18.2G
  • [--] Other process memory: 171.9M
  • [--] Total buffers: 8.6G global + 64.8M per thread (151 max threads)
  • [--] P_S Max memory usage: 0B
  • [--] Galera GCache Max memory usage: 0B
  • [OK] Maximum reached memory usage: 10.4G (44.25% of installed RAM)
  • [OK] Maximum possible memory usage: 18.2G (77.31% of installed RAM)
  • [OK] Overall possible memory usage with other process is compatible with memory available
  • [OK] Slow queries: 0% (0/722K)
  • [OK] Highest usage of available connections: 18% (28/151)
  • [OK] Aborted connections: 0.96% (262/27159)
  • [!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
  • [!!] Query cache may be disabled by default due to mutex contention.
  • [OK] Query cache efficiency: 26.3% (223K cached / 850K selects)
  • [!!] Query cache prunes per day: 141704
  • [OK] Sorts requiring temporary tables: 0% (0 temp sorts / 335K sorts)
  • [OK] No joins without indexes
  • [!!] Temporary tables created on disk: 36% (72K on disk / 197K total)
  • [OK] Thread cache hit rate: 99% (45 created / 27K connections)
  • [OK] Table cache hit rate: 96% (149 open / 155 opened)
  • [OK] Open file limit used: 1% (183/16K)
  • [OK] Table locks acquired immediately: 99% (713K immediate / 715K locks)
  • -------- Performance schema ------------------------------------------------------------------------
  • [--] Performance schema is disabled.
  • [--] Memory used by P_S: 0B
  • [--] Sys schema isn't installed.
  • -------- ThreadPool Metrics ------------------------------------------------------------------------
  • [--] ThreadPool stat is enabled.
  • [--] Thread Pool Size: 6 thread(s).
  • [--] Using default value is good enough for your version (10.1.26-MariaDB-0+deb9u1)
  • -------- MyISAM Metrics ----------------------------------------------------------------------------
  • [!!] Key buffer used: 19.0% (1B used / 8B cache)
  • [OK] Key buffer size / total MyISAM indexes: 8.0G/137.2M
  • [OK] Read Key buffer hit rate: 100.0% (1B cached / 64K reads)
  • [OK] Write Key buffer hit rate: 98.2% (40K cached / 39K writes)
  • -------- InnoDB Metrics ----------------------------------------------------------------------------
  • [--] InnoDB is enabled.
  • [--] InnoDB Thread Concurrency: 0
  • [OK] InnoDB File per table is activated
  • [OK] InnoDB buffer pool / data size: 128.0M/416.0K
  • [!!] Ratio InnoDB log file size / InnoDB Buffer pool size (75 %): 48.0M * 2/128.0M should be equal 25%
  • [!!] InnoDB buffer pool <= 1G and Innodb_buffer_pool_instances(!=1).
  • [--] InnoDB Buffer Pool Chunk Size not used or defined in your version
  • [!!] InnoDB Read buffer efficiency: 85.41% (1896 hits/ 2220 total)
  • [!!] InnoDB Write Log efficiency: 81.54% (53 hits/ 65 total)
  • [OK] InnoDB log waits: 0.00% (0 waits / 12 writes)
  • -------- AriaDB Metrics ----------------------------------------------------------------------------
  • [--] AriaDB is enabled.
  • [OK] Aria pagecache size / total Aria indexes: 128.0M/1B
  • [OK] Aria pagecache hit rate: 97.0% (153M cached / 4M reads)
  • -------- TokuDB Metrics ----------------------------------------------------------------------------
  • [--] TokuDB is disabled.
  • -------- XtraDB Metrics ----------------------------------------------------------------------------
  • [--] XtraDB is disabled.
  • -------- RocksDB Metrics ---------------------------------------------------------------------------
  • [--] RocksDB is disabled.
  • -------- Spider Metrics ----------------------------------------------------------------------------
  • [--] Spider is disabled.
  • -------- Connect Metrics ---------------------------------------------------------------------------
  • [--] Connect is disabled.
  • -------- Galera Metrics ----------------------------------------------------------------------------
  • [--] Galera is disabled.
  • -------- Replication Metrics -----------------------------------------------------------------------
  • [--] Galera Synchronous replication: NO
  • [--] No replication slave(s) for this server.
  • [--] Binlog format: STATEMENT
  • [--] XA support enabled: ON
  • [--] Semi synchronous replication Master: Not Activated
  • [--] Semi synchronous replication Slave: Not Activated
  • [--] This is a standalone server
  • -------- Recommendations ---------------------------------------------------------------------------
  • General recommendations:
  • MySQL was started within the last 24 hours - recommendations may be inaccurate
  • Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
  • Increasing the query_cache size over 128M may reduce performance
  • When making adjustments, make tmp_table_size/max_heap_table_size equal
  • Reduce your SELECT DISTINCT queries which have no LIMIT clause
  • Performance schema should be activated for better diagnostics
  • Consider installing Sys schema from https://github.com/mysql/mysql-sys
  • Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: http://bit.ly/2wgkDvS
  • Variables to adjust:
  • query_cache_size (=0)
  • query_cache_type (=0)
  • query_cache_size (> 256M) [see warning above]
  • tmp_table_size (> 128M)
  • max_heap_table_size (> 128M)
  • performance_schema = ON enable PFS
  • innodb_log_file_size should be (=16M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.
  • innodb_buffer_pool_instances (=1)

----------------

Кол-во записей в базе около 1 млн, таблиц 32.

----------------

Помогите, пожалуйста, советом, что нужно изменить и что проверить ?

 , , ,

Booble ()

Нужно настроить сервер VPS

Здравствуйте, нужна тонкая настройка сервера (Дебиан 9, Апач, php7.1, mariadb, MyISAM). 32 таблицы, кол-во записей около 1 млн Минимизировать скорость отклика (до 0,5c). Сейчас скорость отклика от 1,4 до 2,6 сек. Оптимизировать таблицы, индексы и тд. Внести рекомендации/исправления в медленные запросы (хотя, я их что-то не наблюдаю, в логе)... Хостинг contabo VPS L SSD Проект на php, на простейшей на Simpla cms ---

 , , ,

Booble ()

Очередь голосований

Господа лор-админы, добрый день! Вы заметили, что накапливаются голосования, которые висят неподтвержденными аж по нескольку месяцев?

Что можно предложить для сокращения очереди:

  • Несколько подтвержденных голосований одновременно
  • Ограничение на максимальное количество голосов: когда статистика уже набрана, то дальше смотреть на прирост голосов как бы уже неинтересно.
  • Ограничение на продолжительность подтвержденного голосования: если прошло достаточно времени, то дальше ждать как бы уже не имеет смысла.

 , ,

Infra_HDC ()

Скорость TTFB по IP адресу быстрее, чем по имени домена.

День добрый сайт на VPS, подключен ssl сертификат. Так вот, проблема в том, что если тестировать скорость по чистому ip сервера, то время до получения первого байта (TTFB) = 1,2 секунды.

А если теперь протестировать сайт по домену с сертификатом SSL https://mydomen.ru, то TTFB = 3,5 секунды.

Если протестировать сайт без сертификата SLL, то есть без HTTPS, то скорость загрузи TTFB =2,2 секунды.

Итого. 1) время до получения первого байта (TTFB), тормозится по причине поиска IP сервера через домен. ТО есть, ввожу домен, идет поиск сервера. 2) Сертификат SSL

Вопрос, что можно сделать для оптимизации, где то читал что причина может быть в том, что плохо работает DNS-сервер, который содержит PTR записи для адресов его диапазона. Может быть не RTR записи.

 ,

maxik1986 ()

Уменьшить TTFB (Time to First Byte)

Сайт лежит на VDS, на сервере настроена виртуальная машина VITRIX VM. Нужно настроить так, что бы уменьшить время Time to First Byte Проблема именно в сервере, так как я загрузил просто пустой html документ на сервер, и протестировал загрузку, ответ более чем 2 секунды. prntscr.com/izmxz9 Оплата 3000 р.

 , , ,

maxik1986 ()

Explain до его реального запроса

Сталкиваюсь часто с проблемой , что сторонние разрабы подготовливают зачастую не очень хорошие sql запросы SELECT .
Некоторые для проверки и оптимизации их(отсылаю им графический EXPLAIN [спасибо mysql workbench ] ) требует для своего EXPLAIN очень много времени , а без него не знаю структуру таблицы мне сложно им советовать .

Существует ли способ, хотя бы приблизительно получать результаты по смыслу такие же как и EXPLAIN без исполнение запроса? Есть ли аналог линта для них ?

СУБД Percona или последние mariadb

 ,

pinachet ()

Что можно сделать с логами atop?

Несколько лет уж стоит, логи пишет-пишет, а пользы я с этих гигабайтов так и не сыскал. Чем их наглядно проанализировать, чтобы выявить незамеченные узкие места и принять меры?

 , ,

bodqhrohro_promo ()

Есть что на тему оптимизации недавних патчей к CPU?

Как уже известно, сброс кешей и изоляции на производительности плоховато сказываются, особенно серверных задачах, но и даже некоторых десктопных. К тому же возрастает температура процессора из-за его большей активности.

Между тем, например, для meltdown нужно вызвать исключение обращением к недоступному адресу. Значит напрашивается, что можно было бы чистить кэш не всякий раз при переключении, а только после исключений. Тогда урон производительности был бы, наверное малозаметный, хотя некоторый оверхед пришелся был на усложнение алгоритма переключения.

Что там, идут среди разработчиков обсуждения в этом или другом направлении? Просто до сих пор мало интересовался их кухней и найти среди горы тредов сходу не смог.

P.S. А есть точный список процессоров, для которых Intel уже выпустила обновления микрокода?

 ,

praseodim ()

SSD - профит?

В заголовке отражены сразу два аспекта. Я джва года ждал возможности задать эти вопросы, суть токова:

1. В чём профит от SSD на ноутбуке? Сильно ли возрастёт скорость работы системы обычного нищеноутбука (см. также здесь), если поставить твердотельный накопитель подешевле, небольшого объёма, и отказаться от HDD в принципе? А если от HDD не отказываться? Возможно ли вытащить из ноутбука дисковод и поставить накопитель на его место? Я не представляю, как это.

2. Как выбрать SSD с профитом, т. е. максимально сэкономить? Какие производители из самых дешёвых - не зашквар? Можно ли жить с объёмом в 120 гигабайт, если ноутбук для меня - это терминал для доступа в сеть и печатная машинка с небольшим количеством старых игр?

 , , ,

djambeyshik ()