Дальнейшие разбирательства. RTC баг не проявляется на однопроцессорном ядре
Специалист с Win-Raid попросил провести проверку RTC bug на однопроцессорном ядре WinXP. Забегая вперед, скажу, что как и писалось ранее багу подвержено только мультипроцессорное ядро.
1. Я взял официальный SP3 для русской версии windowsxp-kb936929-sp3-x86-rus
2. Переходим в нем по пути \i386\sp3.cab
3. Из архива sp3.cab берем 2 файла hal.dll и ntoskrnl.exe, копируем в любую директорию и переименовываем в hal1111.dll и ntos1111.exe
4. Копируем hal1111.dll и ntos1111.exe в c:\WINDOWS\system32\
5. Дописываем параметры /kernel=ntos1111.exe /hal=hal1111.dll в файл boot.ini
Все 3 файла я залил в архив -
https://www.upload.e...Kernel.zip.html
Если нужно было проверять на других версиях - дайте свои файлы.
Готово! Измененные файлы лежат на своих местах.
6. Перезагружаем ПК.
7. При загрузке ПК началось определение оборудования, вроде как при свежеустановленной системе. Все драйвера ранее были установлены, поэтому подхватились в автоматическом режиме.
8. Чтобы все драйвера (в том числе видеокарты) нормально заработали ещё раз перезагрузил ПК.
Готово! Можно проводить тест.
9. Судя по "Диспетчеру задач" мой ПК превратился в одноядерный и слетел патч РАЕ. Смотрите скрин - из 4 ядер осталось 1 ядро, а памяти вместо 8 Гб, осталось 2,1 ГБ.
10. Провожу проверку.
Запускаю CPU-Z и Timer. После 380 секунд проверки получаю времена как на скриншоте. Интересным моментом является то, что ранее в таком режиме я бы получил время ACPI равное времени QPC таймера, а RTC таймер ушел бы вперед за 380 секунд приблизительно на 12...14 секунд (приблизительно по +2 секунды за каждые 60 секунд).
Но с новым ядром картина резко изменилась. Время ACPI и QPC таймера немного разнится, на 0.08 секунд. При чем наоборот, уже в меньшую сторону, а время QPC и RTC вообще совпадает. Если время в 0.08 секунд считать погрешностью - то все 3 таймера
считают одинаково. Ещё раз обращаю внимание, что ранее, за 380 секунд "накрутки" я бы получил увеличение времени для
RTC до +(12...14) секунд!
Кстати, оставив в работе 1 ядро и 2 ГБ памяти - мой ПК превратился в тупняк. Сайты открываются мееееееееедленно... Интерфейс уже подтормаживает...... Браузер даже на 2-открытых страничках упирает загрузку CPU в 100%. Это упрек тем, кто говорит мол ХП не раскрывает современное железо... Раскрывает, ещё и как раскрывает!
Если ограничиться 1 ядром и памятью 2 ГБ (без РАЕ) - то очень чувствуется, что не хватает остальных ядер и остальной памяти. И даже не спасает видуха и SSD... Вывод - для современного интернета нужен многоядерный CPU и вагон свободной RAM.
Скриншот - работа ХП на 1 ядре 3,2 ГГц + 2,1 ГБ RAM:
P.S. - эксперимент лучше не повторять, так как при возврате со "Стандартного компьютера" на "Многопроцессорный компьютер с ACPI" есть нюансы. Задача оказалась не простой, а восстановление системы у меня отключено. Пункт "Стандартный компьютер" удалить нельзя - даже нет пункта "Удалить" когда он один.
Правильная последовательность:
Оказывается, когда мы загрузились в режиме "Стандартный компьютер" (с альтернативного ядра hal1111.dll), то
однопроцессорное ядро втихаря копируется в файл hal.dll . В итоге, когда мы возвращаемся обратно, ядро загружается из hal.dll, но файл уже подмененный. Пришлось вернуть ехе и dll из какого-то бекапа, но ПК не загружался, зависал с черным экраном, реестр не мог подгрузиться. Тогда повторно заменил 2 файла и загрузился в безопасном режиме (через F8). Посмотрел в "Диспетчер устройств" - появилось 2 устройства "Многопроцессорный компьютер с ACPI" и "Стандартный компьютер". На "Стандартный компьютер" пункт "Удалить" появился. Я его и удалил, оставив только "Многопроцессорный компьютер с ACPI". Перезагрузился в обычном режиме и работа нормализовалась.