2

Являются ли инструменты, которые анализируют, которые позволяют вам использовать все ядра вашего процессора, а также инструменты, которые помогают вам восстановить память (пока не могу придумать ни одного, но много видели), трюк? Эти инструменты действительно работают?

5 ответов5

5

Держитесь подальше от "оптимизаторов памяти". Они не помогают тебе. Оставьте управление памятью для ОС!

Здесь перечислены причины, по которым: http://www.t3chnophilia.com/2008/08/5-reasons-you-shouldnt-use-memory.html

5

Оптимизаторы памяти

Было время, когда пользователям DOS 386/486 приходилось осторожно вручную оптимизировать свои файлы config.sys и autoexec.bat, чтобы загружать как можно больше материала "выше" (выше 640 КБ). Первая неправильная загрузка может столкнуть все остальное в ваше драгоценное пространство приложения 640K.

Затем появились оптимизаторы памяти, которые автоматически разобрались с вами. Они достигли истинной полезности и зрелости как раз к тому времени, когда Windows 95 сделала их всех устаревшими.

Системные оптимизаторы

Другие вещи, которые оптимизаторы скорости делают, включают очистку корзины, дефрагментацию диска, очистку реестра, удаление старых журналов установки, удаление ненужных драйверов и удаление фрагментов старых программ.

Если им случится убрать что-то прямо на пороге, улучшение скорости может быть драматичным. Обычно нет.

Как вы можете догадаться, вы можете делать все это самостоятельно, не тратя денег.

3

Судя по вашему имени пользователя, я бы сказал, что вы разработчик программного обеспечения, как я.

Если приложение не написано для использования многопоточности, вспомогательное приложение ничего не сделает для вас.

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

Почти все современные компьютеры имеют как минимум два процессора, которые обычно называют «ядрами».

Должно быть мертвой раздачей, поскольку мы все знаем, что ядро и процессор - это две разные вещи.

3

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

Похоже, что утилита подстраивает связь между процессором и ядром. По умолчанию процессы могут отскочить между ядрами в большинстве операционных систем, например, вы иногда увидите программу, которая использует ~ 25% четырех ядер или ~ 50% двух, а не ~ 100% одного.

В большинстве, если не во всех, многоядерные и / или многопроцессорные системы создают один поток внутри процесса (который может быть единственным потоком в однопоточном процессе), который связан с процессором и работает с блоками данных, меньшими, чем Кэш-память ЦП L1 / L2 для большей части своей работы будет работать более эффективно, если будет привязана к одному конкретному ядру, а не будет подпрыгивать между ними. Это связано с тем, что перемещение между ядрами с большей вероятностью будет означать, что кэш L1 нового ядра должен быть "заполнен" (из кэша L2 / L3 или основной ОЗУ), прежде чем жесткий цикл, к которому кэш другого ядра может быть уже подготовлен, сможет работать с максимальной эффективностью. , Это еще хуже, если в кэш-памяти L2 или L3 нет полезного кода / данных, что может быть в случае, если поток перешел на другой физический процессор. Хотя в лучшем случае разница будет минимальной. Чтобы изменить ситуацию, процесс / поток должен многократно проходить по ограниченному набору данных, и даже если он переключает ядра один или два раза в секунду, повторно заполняя кэш L1, такое маловероятно, что вы получите значительный объем, если вы сроки операции, которая займет всего несколько дней.

«Почему операционные системы не устанавливают сходство процессов / потоков более агрессивно, если это может иметь значение?«Это вопрос, который должен прийти вам на ум в этот момент. По сути, в общем случае это мало что меняет, и в тех случаях, когда существует несколько процессов или потоков, связанных между собой процессором, которые могут между ними использовать всю мощность вашего процессора, неправильное сродство может замедлить ситуацию больше, чем поможет правильная установка, и вы провести все дополнительные вычисления, чтобы "угадать", что подходит для текущих обстоятельств, которые могут убить или обратить вспять любую общую выгоду. И в довершение всего, жестких и быстрых правил мало и они далеки друг от друга, поскольку то, что может быть наилучшим для переноса определенных процессов в одной конкретной архитектуре, может быть гораздо менее оптимальным в другой. Таким образом, ваша ОС будет оптимизирована для общего случая, выполнив небольшую часть такой оптимизации, но не слишком стараясь. Если вы собираетесь что-то очень специфическое (скажем, очень специфический процесс обработки чисел или обработки данных, который является почти единственным, что выполняется на компьютере), ваша ОС позволит вам как достаточно привилегированному пользователю настроить сходство процессов и позволит программист должен дать ОС подсказки о том, что может быть более эффективным, но неправильная настройка может помешать планировщику, а не помочь ему.

Короче говоря: распространители этого программного обеспечения могут использовать метод, который теоретически поможет так, как они говорят, но, по моему пониманию, вы не заметите разницу, если это произойдет, и с такой же вероятностью сделать вещи медленнее. Вероятно, вы потратите много-много раз минут на установку и работу с его настройками, чем это сэкономит ваш процессор в течение десятилетий постоянной работы в режиме 24/7 с высокой вычислительной мощностью!

Еще короче: почти, но не совсем, полностью змеиное масло.

Предостережение: по моему мнению, если предположить, что мои знания, относящиеся к области, верны!

1

Я разработчик, поэтому я отвечу на этот вопрос с точки зрения C/C++. Предполагая, что я пишу программу с графическим интерфейсом и нигде в ней не разбиваю рабочие потоки с помощью CreateThread() тогда это одно ядро, и вы ничего не можете сделать, чтобы помочь. Если я использую CreateThread() и CreateProcess() то я как программист могу попытаться установить сходство. Я также могу установить приоритеты планирования, хотя это приблизительные значения на основе описаний такого типа: Низкий, Нормальный, Высокий, BelowNormal, AboveNormal. Фактические базовые уровни потоков - 1-16 (17-32 для кода уровня ядра), но вы не можете напрямую отобразить их, только поместите в корзину согласно вычислениям планировщика. У меня нет больше контроля над тем, как я контролирую свои темы. Внутренние элементы Windows Schedular не известны за пределами Microsoft, отчасти потому, что Microsoft меняет их между выпусками Windows, чтобы гарантировать, что они поддерживают использование системы и делают все как можно более гладко.

Идея о том, что другое приложение поможет, просто нелепа, если только она не сломает мой процесс по ядрам. Это было бы очень сложно, если бы не на уровне ядра, и в любом случае может привести к поломке приложения. Попытка заставить планировщик сделать что-то другое - это также пустая трата циклов ЦП, поскольку вам нужно сделать расчет, чтобы ускорить процесс, а затем применить его к своим потокам и процессам.

Наконец, вы можете сделать вашу систему более нестабильной, используя такие инструменты, как эти. Например, антивирусные сканеры работают с низким приоритетом. Ознакомьтесь с ценностью процесса в Linux (это та же концепция в Windows: в основном, процессы считаются плохими, если они занимают ресурсы). Под Linux они фактически получают меньше времени для такого плохого поведения. Под окнами они просто забирают ресурсы и все тормозят). Таким образом, хотя программа должна быть в состоянии справиться, ваши инструменты могут дать процессам больший приоритет, чем они на самом деле хотят, или меньше, когда им это нужно.

Как уже говорили другие, это лучше оставить ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .