Тормоза iPhone 3G и consolidated.db

    Около полугода назад я все-таки решился поставить iOS 4.2.1 на свой iPhone 3G (где долгое время была 3.1.3), и поначалу слухи о невиданных тормозах показались мне либо преувеличением, либо недоработками 4.0.
    Однако через пару месяцев все начало тормозить уж слишком неприлично.
    Погуглил, отключил Spotlight, не помогло.
    Было очевидно, что основные проблемы связаны с Location services, стоило его включить, иногда не удавалось ответить на звонок даже через несколько минут после закрытия карты.
    Приложения не запускались, хотя Springboard был живой.
    По top или free не было понятно, в чем затык.
    Гугл предлагает сделать Reset Location Warnings — помогло, но совсем ненадолго, уже на следующий день все вернулось в прежнее состояние. Приходилось держать Location Services выключенными, а когда навигация была очень нужна — готовиться долго ждать.
    И тут я вспомнил историю с consolidated.db. Раз информация о всех перемещениях (как об этом писали в новостях) сохраняются в sqlite, наверняка база быстро становится большой и начинает тормозить.

    Я нашел целых два consolidated.db:
    iPhone:~ root# find / -iname consolidated* | xargs ls -l
    -rw-r--r-- 1 root wheel 19036160 Oct 22 2010 /System/Library/Frameworks/CoreLocation.framework/Support/consolidated.db
    -rw-r--r-- 1 root wheel 12611584 Jul 23 22:21 /private/var/root/Library/Caches/locationd/consolidated.db

    Первый хоть и больше, но давно не обновлялся, а второй похож на то, что мы ищем.
    Открываю его на компьютере в SQLite Database Browser — в таблицах WifiLocation и CellLocation в сумме около 100 тысяч записей, координаты похожи на мое местоположение. Борюсь с желанием склеить их в трек и наложить на карту — сейчас суть не в этом :)
    Делаю
    delete from wifilocation;
    delete from celllocation;
    update wifilocationcounts set count=0;
    update celllocationcounts set count=0;

    (для этого пришлось взять консольный sqlite3, который я позже поставил и на сам айфон. Truncate table он не умеет.)
    Делаю на всякий случай vacuum. Файлик сократился до 4 Мб, все равно много, но уже должно быть заметно.
    Заливаю файлик обратно, включаю locationd — вроде бы зашевилися. Завершается в 10-20 секунд вместо нескольких минут (это видно в top, а также по значку со стрелочкой в Status Bar, в правом верхнем углу рядом с батарейкой).
    Пробую стереть его совсем — может, эта возня с sqlite не нужна на практике. И locationd его пересоздает (не сразу же при запуске, но через какое-то время), и опять все работает.

    Таким образом, если в айфоне тормозит определение местоположения, и у вас есть jailbreak, можно попробовать вылечить его при помощи
    iPhone:~ root# rm /private/var/root/Library/Caches/locationd/consolidated.db

    Что же касается второго consolidated.db из /System/Library, там содержатся различные координаты базовых станций GSM и WiFi, в основном в западном полушарии. Также, у всех записей timestamp=0. Возможно, эта база должна ускорить работу навигации на демонстрациях в Купертино :)

    PS Если ставите sshd — не забывайте сразу, сразу же поменять пароли рута и mobile и закинуть свой публичный ключ

    PPS Можно установить права 000 на него и забыть до следующей перепрошивки.
    chmod 0 /private/var/root/Library/Caches/locationd/consolidated.db

    Не проверял, но говорят, что этого мало, и лучше всего подменить его папкой
    rm /private/var/root/Library/Caches/locationd/consolidated.db
    mkdir /private/var/root/Library/Caches/locationd/consolidated.db
    Поделиться публикацией

    Комментарии 32

      +4
      А поменять права доступа к этому файлу на 0011 (---r--r--) не прокатит?
        0
        надо попробовать, а то я уже думал в crontab поставить rm :)
          0
          Это будет самый простой вариант, с картами прокатывает
            +1
            только ---r--r-- — это 044.
            А из каких соображений именно так? Почему не 444, 400 или 000?
              0
              Пардон, перепутал r и x :-) Из соображений «чтобы никто левый не прочитал». Но против 000 тоже ничего не имею :-)
            +4
            Я перешёл на Whited00r, вроде и от 4ой версии всё есть и не лагает…
              0
              есть софт, который работает только на 4, я по-моему именно поэтому обновился.
              Ну и в 4 какие-то небольшие плюшки, но кроме счетчика символов в стандартной смсилке, значка «работает навигация» и папок в спрингборде на вскидку ничего назвать не могу).
              А, еще поворот клавиатуры в сафари починили, и сам сафари побыстрее и пофункциональнее (но, конечно, до 4.3 ему далеко)
              –2
              4.3.4 для 3G выпускался? Почему бы не воспользоваться последней версией iOS?
                +2
                потому что поддержка 3G закончилась на 4.2.х
                  +2
                  для 3G последняя 4.2.1
                  +9
                  Только сразу его не удаляйте, посмотрите что у него внутри, вот у меня например)
                  Под Windows смотрим через iOSTracker.NET

                  image
                    –1
                    Спасибо! Я думал только под мак есть
                      0
                      У меня не работает(
                        0
                        Microsoft .NET Framework version 2 есть?
                          0
                            0
                            Возможно у вас формат бэкапа отличается?
                              0
                              Заново правёл синхронизацию и всё заработало
                                0
                                все сделал также, но не помогло, net обновил. Что еще попробовать?
                                  0
                                  удалите полностью папку и сделайте синхронизацию
                                0
                                Бэкап зашифрован?
                          0
                          Не подскажите ка кпод мак называется приложение?
                          +1
                          Да вы батенька центровой :))
                            0
                            у меня разъездная работа в пределах садового, там в проге по дня можно смотреть куда ездил)
                            0
                            посмотрел свою карту — в принципе никаких грязных подробностей, но какую-то общую информацию извлечь можно.
                            А так — больше самому сидеть и вспоминать, куда ездил несколько месяцев назад :)
                            +1
                            Права надо на эту базу вкатить 000, и все станет ок. Ну и придварительно конечно пустой файл db загнать вместо родного.
                              +1
                              Проверяли? locationd от рута работает — ему всё равно, хоть 000 хоть 777, однако можно сделать хитрее:
                              удаляем файл базы и создаём вместо него директорию с таким же именем, profit :)

                              rm /private/var/root/Library/Caches/locationd/consolidated.db
                              mkdir /private/var/root/Library/Caches/locationd/consolidated.db
                              –5
                              Спасибо, вроди по шустрее стало :)
                                0
                                при там раскладе имеет смысл поискать все файлы баз данных, может еще какое узкое место найдется.
                                  0
                                  Странно, у меня после этих действия место положения стало определяться неверно.
                                    0
                                    Должно вскоре исправиться, особенно если на девайсе работает интернет.
                                    Эта база — кеш местоположений, привязанных к сотовым вышкам и вайфаям.
                                    Иногда данных GPS нет, и местополжение определяется по вышкам и вайфаю. Когда чей-нибудь вайфай переезжает, это может вызвать подобные спецэффекты. В consolidated.db возможно уже было закешировано связанное с этим уточнение.
                                    Если нет интернета и сигнала GPS, определять местоположение сложнее.
                                    0
                                    Я так понимаю если я создал директорию, то вновь кешировать эти данные не получится.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое