Обезвоженная продаже расфасованных пищевых продуктов в Китае и Монголии

Хостинг нескольких доменов на отдельные сервера, но только один общедоступный IP-адрес с ProxmoxVE... Как я могу сделать это с помощью простого и быстрого решения? Отдельные сервера за роутером должен быть доступен по SSH, по FTP, HTTP, и т. д.

+576
ziiweb 13 нояб. 2017 г., 04:43:10
21 ответов

Я неправильно понял ОП, но я оставлю его здесь, просто Incase:

Вы можете перетаскивать файлы из одной папки в другую на сайте или кликнуть правой кнопкой мыши на файл и нажмите "Переместить". Вы также можете использовать папку Dropbox на компьютере Mac (Если у вас установлен клиент), как нормальный папки Finder.

+965
Nsquare Experts 03 февр. '09 в 4:24

Недавно я был в отпуске и сохранены все мои фотографии на моем Mac пока меня не было. Они не синхронизируются в iCloud как я не подключен к интернету.

Я вернулся домой и настройку нового ноутбука с Windows. Ноутбук Windows показывает все "Мой фотопоток" фотографии, сделанные вчера, но мой праздник фотографии, сохраненные на Mac, кажется, не синхронизируются в iCloud. Mac теперь онлайн, и я проверил Системные настройки → сервис iCloud → фото , и это все показывает автоматическая синхронизация, но этого не произошло.

Как я могу заставить его сохранять эти фотографии в iCloud? Я хотите получить доступ к празднику фотографии на моем ноутбуке с Windows и удалите все данные с Mac.

+952
Miilind Survey 29 сент. 2021 г., 05:01:49

Я пытаюсь скопировать весь жесткий диск, и компьютер IBM-стиль таблицы разделов на большую по ДД на GNU/Линукс. Вопросы:

  1. Могу ли я использовать дополнительное пространство на большем диске посредством изменения таблицы разделов?
  2. Я использовал LVM на исходном диске. Поможет ли это, или осложнения, когда я скопировать его или использовать дополнительное пространство на больший диск?
+826
Seraph 21 февр. 2022 г., 04:27:53

Вы должны попробовать использовать dumpe2fs. Или использовать Линукс лайв CD/USB, с упорством и использовать badblocks на отмонтированном диске. Как с помощью badblocks на подключенный диск не будет работать должным образом.

dumpe2fs -б /Дев/СДА

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

+816
Jv Buang Buang 25 мар. 2014 г., 04:54:06

Есть 2 версии этой связки , которые вы можете установить на вашей системе, за дом сами из исходников.

Активное Состояние

Можно использовать активный государств двоичные дистрибутивы их выпусками этой связки. Они предлагают 8.6.1.0 32-бит & 64-бит от их загрузки страницы.

Deb файлы

Другой метод(ы) распространяется на связки по странице проекта, под названием: двоичные дистрибутивы. Я бы, наверное, пойти с tombert по tcltk. Они поддерживают все 32-разрядные и 64-разрядные версии .деб файлы есть, и пакеты построены на ЛТС Убунту (12.04), которая является то, что вы ищете.

   ss of d/ls

+720
Mohammad Ebrahimi 19 мар. 2017 г., 19:40:08

В других, у нас есть две конфликтующие правила здесь, поэтому мне интересно что из них имеет приоритет.

С одной стороны, под "пространство героев" он говорит:

Грехи игрок не может переместить монстра из героя-занятое место по какой-либо причине

С другой стороны, под телепортироваться он говорит:

Если карта или способность позволяет фигура будет телепортироваться к другом пространстве, все движения, связанные с правила игнорируются.

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

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

+632
Simrat Singh 7 июл. 2021 г., 20:20:24

(TL;д-р ниже)

Так я недавно установил Windows на моем середине 2014 года для MacBook Pro сетчатки 13" , Чтобы играть в некоторые игры. Я никогда не ожидал супер невероятную производительность в 3D играх, но тем не менее я был сильно разочарован и мне интересно, если что-то не так с моим оборудованием или драйверами.

Игры, такие как свидетеля (логическая игра в 3D со стилизованной графикой и никаких действий) и спек ОПС: линия (шутер, который не супер графически кричащие даже когда он был выпущен в 2012 году), едва бежал, и должен быть настроен с абсолютным минимумом настроек графики для них, чтобы достигнуть 20—30 кадров в секунду. То же самое и с ракетой Лиги, супер доступных видов спорта-гоночный гибрид, который любой мало-мальски приличный бюджетный аппарат может работать прилично. Худшим, хотя, был любителей в опасное пространство-время, плоское 2D игры — он бежал ровно на мой друг, гораздо старше и слабее не-Apple, ноутбук.

Super fun game! Мне пришлось понизить разрешение для этого.

Зная почти ничего об оборудовании, я сделал несколько исследований, и выяснили, что моя машина Intel Ирис графика и, что самое интересное, что в macOS динамически выделяет до 1,5 ГБ системной памяти для видеокарты.

Однако, когда я был на Windows, я пошел в вы можете запустить его? и использовал свои инструменты диагностики системы, чтобы проверить мои очки против минимальных требований для какой-то игры (ничего особенного, я не против нового 2016 игра Doom или даже в ГТА). Каждый результат говорит, что я не отвечают даже минимальным требованиям для этой игры (даже игры, которые я на самом деле побежал уже), потому что, согласно ему, я только 112.5 МБ видеопамяти на Windows.

Поэтому я думаю, что это на самом деле проблема.

enter image description here Это действительно все, что память меня может быть?

ТЛ;ДР: собственно вопрос(ы)

Может ли Windows выделить свыше 112,5 МБ оперативной памяти для графики?

Это способна сделать это динамически как в macOS ли? Если нет, есть ли способ, чтобы эти силы к разным количеством оперативной памяти, поскольку это, по-видимому, используя минимально возможной суммы? (Моя машина имеет 8 ГБ, ее можно будет без проблем посвятить 2 ГБ этих с графикой, может даже больше, поскольку все, что я делаю в Windows откройте Steam.)

Я использую Windows 10 с буткемпа-предоставлен драйверы. Не вручную обновить вещь, для страха нарушить совместимость.

Даже если я полностью вне трассы вот и вся моя аргументация неисправен, что-нибудь еще я могу сделать, чтобы крон больше графической производительности от моей машины под Bootcamped окна?

Спасибо так много для Ваш время.

+602
detohatop 14 мар. 2022 г., 19:12:59

Если вы работаете 12.04, у вас уже есть ИЛС. Просто нажмите клавишу Alt. ИЛС не доступен для 11.10.

+563
kolis 6 сент. 2017 г., 06:52:07

Для того, чтобы контролировать аудио из приложения во время приглушения звука с вашего микрофона вы можете сделать folloowing:

  1. Использовать программу soundflower (16 ч) вместо программу soundflower (2 ч).

  2. Прямой звук с микрофона в канале 3 программу soundflower (16 ч) через линейный вход.

  3. Прямые аудио из приложения к каналам 1 и 2 программу soundflower (16 ч).

  4. Монитор каналов 1 и 2 через Soundflowerbed, и не контролировать канал 3.

+542
InYaz 9 дек. 2014 г., 04:34:38

Да. Можно просто использовать новые карточки игроков и взять карты, которые используют новую механику.

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

+539
Kam Sen 27 мар. 2013 г., 21:50:28

Пожалуйста, примите, что это следует только в качестве подсказок, чтобы стимулировать к вашей фантазии.
Вы можете создать свой Баш функция или псевдоним с одним или несколькими из следующих идей.

Текст Ч/Б

Как отметил mikeserv вы можете использовать функции printf %020d ввести большой пропуск до выхода из общ.

Ls0 псевдоним='е %050d|ТР 0 \\п; ЛС-ля'

Кроме того, вы можете таможня оно с некоторым разделения слоев или сообщения...

Лс1 псевдоним='е %020d|ТР 0 \\п;Эхо "# выход $(фрд)"; \
 е %02d порта|ТР 0 \\п; ЛС-ля'

Текст Цветной

В более творческом пути вы можете использовать цвета и у вас будет 1-й линии в зеленый

setaf псевдоним Ls2='выход 2; ЛС-ля'

Еще здесь вы можете наслаждаться в пользовательских решений; вы можете в числе первых 3 Цвет выход, есть 1-й линии с фона инвертируются, цвета...

модели LS3 псевдоним='ccol=$(Эхо "($ccol +1) %3+1" | до н. э.); выход setaf $ccol; ЛС-ля'
Ls4 псевдоним='выход Рэв; ЛС-ля'
модель LS5 псевдоним='Эха -е "чтения 7\nsetb 1" | выход -с ; ЛС-ля'

Старомодный Баннер

Только в случае, если вы установили пакет баннер можно придумать что-то вроде:

Ls6 псевдоним='е "\н\н"; баннер $(базовое имя $(фрд)) ; функции printf "\н\н" л -ла'
которой LS7 псевдоним='е "\п\п"; выход setaf 2; баннер $(базовое имя $(фрд)); \
 функции printf "\н\н" л -ла'

и начать использовать смешанные решения...

Примечания:

  1. Если вы поместите его в функцию, вы можете управлять лучше возможных параметров Когда LS-Ла находится в последней позиции, вы можете попробовать добавить другие параметры "время выполнения".
  2. человек выход и человек, используя базу для дальнейшего любопытства
  3. Можно использовать выпускаемый последовательности для окрашивания выходной (Эхо -е '\е[31М' ; ЛС-Ла)
+517
Wayne Yang 29 февр. 2012 г., 20:46:28

Я регулярно использовать машину времени резервного копирования Макбук, Макбук Про, и несколько Мас Mini и Mac Pro с двумя 1.5 внутренние жесткие диски ТБ. Это относительно простой, но есть один нюанс.

Вы должны иметь следующее:

  • Учетную запись на Мак про.
  • Общий доступ к файлам включен в настройках системы. Убедитесь, что вы используете дополнительный жесткий диск. Это происходит автоматически, если вы используете учетную запись администратора. Ваше имя пользователя также должен иметь доступ для чтения/записи на диск.
  • Доступ к сети от вашего MacBook и компьютеров Mac. Компьютер Mac Pro может не быть брандмауэром, например

Установки

На вашем ноутбуке, вы должны подключиться к общей громкости на Мак про. Посмотрите в разделе "общая категория" в боковой панели Finder. Если обе машины находятся в одной подсети, Бонжур должно автоматически сделать Мак про видимым. Если они находятся в разных подсетях, возможно, вам придется подключить вручную. В этом случае, выберите "GO->подключиться к серверу" в Finder (СМД-K) и введите "ОВП://макпро.пример.ком/". (Очевидно, вы должны использовать фактическое имя домена вашего Mac Pro в здесь.)

Если вы уже установили общий диск, зайдите в "Системные настройки" и выберите машину времени. В панели настроек нажмите кнопку "Выбрать диска...". Ваш установленный объем должен появиться в качестве опции Для время резервного копирования машина. Идите вперед и выберите его.

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

Для будущих резервных копий, Машина времени автоматически смонтировать удаленный объем, используя учетные данные, которые вы предоставили, сделать резервную копию, а потом отключить громкость. Нет больше работы с вашей стороны.

Когда вам нужно восстановить файл, "введите Машина времени", как обычно. Машина времени автоматически смонтировать удаленный диск (если он имеется) и перейти в режим восстановления файла. Это будет медленнее, чем локально подключенного диска, но он будет работать.

Нюанс

Хотя машина времени будет работать нормально, есть важная разница, если вам нужно сделать полное восстановление из резервной копии машины времени, на Мак про. В моем случае, к примеру, мой MacBook Pro упали со стола и ударил в деревянный пол, который повредил внутренний жесткий диск. Когда я установил новый жесткий диск, мне нужно было восстановить из резервной копии машины времени, на моем Мак про.

В свое время у меня был ОС Х установить диск, но следующие замечания должны также применяться в режим диска восстановления под льва. Когда проходит восстановительный процесс, установщик спросит, хотите ли вы восстановить из резервной копии машины времени. К сожалению, вы не найдете диске резервную копию в списке. Проблема в том, что объем, который вы хотите использовать недоступна, поскольку Mac Pro не работает на ОС Х сервер и не вещает , что это "капсула времени". (См. bmikeс первой пули в его ответ на этот вопрос.) Решение вывести окно терминала и вручную смонтировать машину времени резервного копирования в командной строке. Увидеть mount_afp странице справочника документации о том, как это сделать.

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

Я надеюсь, что это помогает.

+508
AndrewRIGHT 14 мая 2010 г., 20:19:10

Они не будут знать. Еще. Великобритания иммиграция обмена договорами со странами FCC, которые включают США, Великобритании, Канады, Австралии и Новой Зеландии. Если вы должны были обратиться в любой из этих стран, вы, как правило, должен предоставить отпечатки пальцев, как часть процесса оформления визы. Затем эти отпечатки можно анонимно поделился с другими странами ФКС. Если там был матч, другие биографические данные и история иммиграции в том числе отказов в визе будет общий.

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

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

https://www.whatdotheyknow.com/request/378974/response/918768/attach/html/3/FOI%2042284%20Response.pdf.html

+493
avi Avinash 13 мар. 2015 г., 03:33:25

Холи , как правило, проходит в течение марта-апреля (точные даты меняются от года к году, поскольку он основан на индийский лунный календарь). И действительно, это массовый фестиваль...в северных регионах Индии, так вот откуда традиция основана. Кроме того, отмечается в других частях Индии в несколько иных формах, но не такой же степени.

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

(Как в стороне, Тайский фестиваль Сонгкран берет свои корни от индийской традиции Холи, который отмечают в некоторой степени схожие с водных битв.)

Сами порошковые краски могут быть куплены от магазинов, или люди будут более чем готовы поделиться с вами, как долго, как вы согласны присоединиться к ним в праздновании. Высказывались опасения, за последние несколько лет на сохранность красители, используемые в некоторых из этих цветов, как дешевле, как правило, производится с использованием металлических оксидов. Темно-синий и черный цвета, как правило, к этому виду. Если вы хотите, безопасные красители, попросить гулал (произносится "ГУ-Ла-ал"), которые производятся из натуральных растительных экстрактов и, как правило, не вызывают аллергических реакций. Общества связаться по дешевле металлические красители не должны вызывать проблемы для большинства людей, и это только длительного воздействия, что может привести к повреждению кожи, но это то, что стоит знать об.

Индийских экспатриантов во всем мире празднуют Холи тоже, так что в случае, если вы можете путешествовать, возможно, чтобы почувствовать вкус праздника на одном из таких торжеств. Проверьте это видео на фестиваль цветов США - они могут быть довольно масштабные события тоже!

+201
dori4n 9 окт. 2014 г., 18:31:12

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

Это предотвращает диск-сканирование от удара приложений; как они, как правило, только целевой IP-адрес фактически не давая правильное имя хоста на хост: заголовок, то эти запросы будут передаваться на хост, по умолчанию, который имеет только статический файл index.html . Следовательно, эти запросы не будет вызывать любая нагрузка на ваш веб-сервер / базы данных. Оно также предотвращает ваш журнал доступа загадили такие сканы.

Так, нет, это не требуется, но оно имеет свои преимущества.

+184
user11756290 28 сент. 2012 г., 03:21:07

Пока в Японии в последнее время японский коллега научил меня отличная карточная игра.

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

Мой коллега сказал мне, что это была обычная игра для него и его одноклассников в средней школе. Я провел некоторое время погуглить, и я не могу показаться, чтобы придумать название или официальных правил.

Что такое название игры? Каковы официальные правила?

+182
Treecity 5 июн. 2022 г., 05:07:53

enter image description hereenter image description here

Сколько и как изменилась личность Итачи Uchihaa после резни?

+123
Colby Cole Sargis 13 апр. 2010 г., 15:15:06

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

К сожалению, вы должны знать, какие архитектур 32-разрядных и 64-разрядных. Но вы можете легко это выяснить.

Например, мой М7 отображает arm7l. Быстрый поиск подтверждает, что это 32-разрядную архитектуру, что означает, что мой работающего ядра был скомпилирован как 32-разрядное приложение.

+105
Jason Sulskis 29 июл. 2016 г., 14:20:19

Если вам не нужны очень качественные случайность, и близко-к-равномерное распределение достаточно хорошо, вы можете пойти очень быстро, особенно на современном процессоре с эффективным Симд целочисленных векторов как x86 с поддержкой SSE2 или AVX2.

Это как @NominalAnimal ответ , так как мы оба имели ту же идею, но вручную векторизовать для x86. (И с с худшее качество случайных чисел, но, вероятно, достаточно хорош для многих случаев использования.) Это работает примерно в 15 или 30 раз быстрее, чем код @номинальное, в ~13 ГБ/с Выход ASCII на 2,5 ГГц процессор Intel Haswell с поддержкой AVX2. Это все равно меньше, чем теоретическая максимальная пропускная способность оперативной памяти (двухканальной DDR3-1600 составляет около 25,6 ГБ/С), но у меня было время писать в /dev/нуль, так что это на самом деле просто переписывать буфер, который остается в кэше. Планы должны запустить этот же код значительно быстрее, чем Хасвел (внизу ответа).

Предполагая, что вы на самом деле узкое место ввода-вывода на диск или трубопроводов это где-то, быстрое внедрение означает, что ваш процессор даже не придется часами выше, чем ожидания. Он использует гораздо меньше энергии для получения результата. (Батареи / тепло / глобальное потепление.)

Это так быстро, что вы, наверное, не хочу писать его на диск. Просто повторно генерировать по мере необходимости (от того же семени, если вы хотите одни и те же данные еще раз). Даже если вы хотите кормить его в многопоточный процесс, который может использовать все процессоры, работает это перенаправление данных уже не будет жарко в L3 кэш-памяти (и кэша L2 на ядро, который ее написал), и использовать очень мало процессорного времени. (Но обратите внимание, что окантовка добавляет много накладных расходов, и писать в /dev/нуль. На панелях с i7 процессор 6700K, трубопроводы в сан. узел-с или другую программу, которая просто читает + отбрасывает ее ввод, это примерно в 8 раз медленнее, чем запись в /dev/нуль, и использует только 70% процессора. Но это по-прежнему 4.0 ГБ/С на процессора 3.9 ГГц.

Регенерировать быстрее, чем перечитывать его еще из быстрого слота PCIe подключен SSD, но ИДК, если это более эффективно (вектор-целочисленный множитель хранится очень занят, и это, наверное, очень властолюбивый, вместе с поддержкой AVX2 256Б векторные Алу). Ото, я не знаю, сколько процессорного времени чтения с диска будет отнять от чего-то, что было максить все процессорные ядра на этом входе. Я думаю, что переключения контекста, чтобы повторно генерировать в 128К куски может быть низким при работающем файловой системы / код pagecache и распределении страниц для чтения данных с диска. Конечно, если это уже жарко случаев, это всего лишь функции memcpy. ОТО, мы уже пишут о так быстро, как функции memcpy! (который должен разделить основной пропускной способности памяти между чтения и письма). (Также обратите внимание, что запись в память, что уже не жарко в кэше обычно триггерами для чтения для владения для поддержания когерентности кэша, который можно избежать с невременные магазинах, или с x86 это рэп movsb (оптимизированную функцию memset, memcpy и в микрокод, который избегает РФО, поскольку Энди библиотеки GLEW это внедрению его в Р6 (Пентиум про))).


Пока это только доказательство концепции, и строки обработки лишь приблизительно правильно. Это неправильно по концам 2 в буфер. С больше времени для развития. Я уверена, что смогу найти более эффективный способ для вставки новых строк, что тоже абсолютно правильно, с накладными расходами по крайней мере до этого (по сравнению с выводом только пробелами). Я думаю, что это что-то вроде 10 до 20%. Мне только интересно знать, как быстро мы могли бы сделать это выполнить, не имея полированной версии, поэтому эту часть я оставлю в качестве упражнения для читателя, с комментариями, с описанием какой-то идеи.


На Хасвел i5 процессор на 2.5 ГГц макс турбо, с DDR3-1600МГц оперативной памяти, приуроченная производить 100GiB но уменьшенную. (Времени на cygwin64 на Win10 с gcc5.4 -О3 -март=родной, опущено -funroll-петли, так как у меня был жесткий достаточно времени, получая приличное время работает на этот заимствованный ноутбук. Надо просто загрузится с Linux на USB).

запись в /dev/нуль, если не указано иное.

  • Джеймс Холлис так: (не проверял)
  • Версия по номинальной fwrite: ~2.21 с
  • это (с SSE2): ~0.142 сек (немасштабированный раз = реальный=14.232 с пользователей=13.999 с Сыс=0.187 сек).
  • это (Аух-128): ~0.140 сек
  • этим (поддержкой AVX2): ~0.073 сек (немасштабированный: реальный=0m7.291s, пользователь=0m7.125с, Сыс=0m0.155s).
  • этим (поддержкой AVX2) под Cygwin трубы в туалет -с, с 128kiB размер буфера: 0.32 S с процессора на 2.38 ГГц (максимальная двухъядерный турбо). (немасштабированный раз: реальный=32.466 с пользователей=11.468 с Сыс=41.092, в том числе и туалет). Был на самом деле только половина данных, скопированных, хотя бы потому, что моя глупая программа предполагает, что пишете полный буфер, хотя это не так и Cygwin записать() не только 64К за звонок в трубу.

Так с поддержкой SSE2 это примерно в 15 раз быстрее, чем скалярный код @номинальная животного. С поддержкой AVX2, это примерно в 30 раз быстрее. Я не пробовал версию номинальная кода, который просто использует запись() вместо fwrite(), но, вероятно, большие буферы из stdio основном остается в стороне. Если это копирование данных, что объясняет большое замедление.


Раз, чтобы произвести 1 Гб данных на Core2Duo E6600 с частотой (Мером 2.4 ГГц, 32kiB частная Л1, Л2 4MiB общей кэш-памяти), память DDR2-533 МГц в 64-битной Linux 4.2 (Убунту 15.10). Еще с помощью 128kiB размер буфера для записи(), не исследовал этот аспект.

запись в /dev/нуль, если не указано иное.

  • (С SSE2) с новой строки транспортная обработка и векторы 4 цифр от каждого вектора случайных байт: 0.183 сек (времени делать 100GiB в 18.3, но аналогичные результаты за 1 гиб работает). Инструкция по 1.85 за цикл.
  • (С SSE2) это трубы в туалет -с: 0.593 сек (немасштабированный: Реал=59.266 с пользователь=20.148 с Сыс=1m6.548s, в том числе процессорное время туалета). Же число записать() системные вызовы как с использованием Cygwin, но на самом деле трубопроводов все данные, потому что Linux обрабатывает все 128К записи() в трубу.
  • NominalAnimal по fwrite() версии (gcc5.2 -О3 -март=родной), работать с ./decdig 100 $((1024*1024*1024/200)) > /dev/нуль: 3.19 сек +/- 0.1%, с 1.40 инструкции за цикл. -funroll-петельки, может быть небольшая разница. лязг-3.8 -О3 -март=родной: 3.42 сек +/- 0.1%
  • Номинал-fwrite трубы в туалет -с: Реал=3.980 с пользователей=3.176 с Сыс=2.080 с
  • Джеймс Холлис линии на время версии (лязг++-3.8 -О3 -март=родной): 22.885 с +/- 0.07%, с 0,84 инструкции за цикл. (г++5.2 был немного медленнее: 22.98 ы). Писать только одну строку за один раз, вероятно, значительно пострадал.
  • Стефан Chazelas по тр < с /dev/urandom | ...: реальный=41.430 с пользователей=26.832 с Сыс=40.120 С. тр получал все ядра процессора на себя большую часть времени, проводя почти все свое время в ядре драйвер генерации случайных байт и скопировав их в трубы. Другие ядра на этот двухъядерный машина работала остальной части трубопровода.
  • время значение lc_all=c головка -c512M <файл/dev/urandom >/dev/нуль, т. е. просто читала, что много рандома без тубопровода: Реал=35.018 с пользователей=0.036 сек Сыс=34.940 С.
  • Программа Perl Lưu составляется на основе рейтинга Фук (на языке Perl У5.20.2 из Ubuntu15.10):
    Ланг=en_CA.В UTF-8: Реал=4m32.Пользователь 634s=4м3.288s Сыс=0m29.364.
    Значение lc_all=C в Ланг=с: Реал=4m18.Пользователь 637s=3m50.324s Сыс=0m29.356-е. Еще очень медленно.


  • (С SSE2) это не перевод строки обработки, и 3 или 4 вектора цифр из каждого вектора случайных байт (почти точно такой же скоростью: dig3 = в%10 Шаг о безубыточности на этом ГВ): 0.166 сек (1.82 инструкции за цикл). По сути, это нижняя граница того, что мы можем приблизиться к совершенно эффективными строки обработки.

  • (С SSE2) старая версия с новой строки обработки, но только по одной цифре в uint16_t элемент, используя в%10, 0.222 секунд +/- 0.4%, 2.12 инструкции за цикл. (Составлено с gcc5.2, март=родной -О3 -funroll-петли. Раскатать петель происходит за этой помощью кода на этом оборудовании. Не используйте его слепо, особенно для больших программ).
  • (С SSE2) старая версия, запись в файл (на RAID10f2 из 3 быстрых магнитных жестких дисков, не очень оптимизирована для записи): ~4 секунд. Мог бы идти быстрее по настройке ядра настройки ввода/вывода буфер, чтобы позволить намного более "грязные" данные, прежде чем написать() блоков. "Системе" времени еще ~1,0 секунды, гораздо выше, чем "пользователь" времени. На этой старой системы с медленной памятью DDR2-533 оперативная память, она занимает ~4 раза дольше, для ядра в функции memcpy данные в кэш страниц и запустить систему XFS функции, чем это делает для моей петли, чтобы держать переписав его в буфер, который остается в кэше.

Как это делается

Быстрый PRNG-это очень важно. xorshift128+ может быть векторизован, у вас есть два или четыре 64-разрядных генераторов в параллель, в элементы Симд вектор. Каждый шаг производит полный вектор случайных байтов. (256Б поддержкой AVX2 реализации здесь с корпорацией Intel встроенные функции). Я взял его за символическую выбор xorshift*, потому что 64-битных векторных целочисленное умножение возможно только в поддержкой SSE2/поддержкой AVX2 с расширенной точности методов.


Учитывая вектор случайных байтов, мы можем изрубить каждый 16-битный элемент на несколько десятичных цифр. Мы производим несколько векторов 16-разрядные элементы, каждый цифры ASCII + ASCII в пространстве. Мы храним, что прямо на наших буфер вывода.

Моей первоначальной версии просто использовали х / 6554 , чтобы получить одну случайную цифру от каждого uint16_t элемент вектора. Это всегда между 0 и 9 включительно. Это предвзятое от 9, потому что (2^16 -1 ) / 6554 только 9.99923. (6554 = Сэл((2^16-1)/10), которая гарантирует, что частное всегда < 10.)

х/6554 может быть вычислена один умножить на "волшебные" константы (с фиксированной точкой взаимные) и сдвига вправо на максимум-половина результата. Это лучший случай для деления на константу; некоторые делители взять несколько операций, и подписал отдел берет дополнительную работу. х % 10 имеет аналогичную предвзятость и не так дешево, чтобы вычислить. (ССАГПЗ АСМ вывод эквивалентен х - 10*(х/10), т. е. дополнительную умножать и вычитать на верхней части дивизии с использованием модульного мультипликативным обратным.) Также, чтобы низший разряд xorshift128+ это не как высокое качество, так что разделив взять энтропии от старших бит лучше (по качеству, а также скорости), чем по модулю принять энтропийный с низким бит.

Однако, мы можем использовать больше энтропии в каждом uint16_t, глядя на низкие цифры, как при номинальной по цифре() функция. Для максимальной производительности, я решил взять минимум 3 десятичных цифр и Х/6554, чтобы спасти одного PMULLW и PSUBW (и, вероятно, некоторые MOVDQA) и более высокого качества, возможность взять на 4 минимум десятичных цифр. х/6554 слегка затронуты минимум 3 десятичных цифр, так что есть какая-то корреляция между цифрами один и тот же элемент (8 или 16 разрядов, разделение на выход ASCII, в зависимости от ширины вектор).

Я думаю, что GCC является деление на 100 и на 1000, а не более длинную цепь, что последовательно делится на 10, так что это наверное не существенно сокращая продолжительность номера-кольцевая цепь зависимостей, которая производит 4 результатов от каждого выхода ГПСЧ. port0 (векторное умножение и сдвиг) является узким местом из-за модульной мультипликативными инверсиями, и сдвиги в xorshift+, так что это определенно полезно, чтобы сохранить вектор-умножение.

xorshift+ настолько быстро, что даже используя только ~3.3 бит случайности из всех 16 (т. е. 20% эффективности) не намного медленнее, чем рубить его на несколько десятичных цифр. Мы лишь приблизительно равномерное распределение, потому что этот ответ фокусируется на скорости качество не так уж плохо.

Любой вид условного поведения, который держит переменным числом элементов заняло бы гораздо больше работы. (Но может все еще быть сделано несколько эффективно используя Симд слева-упаковка техники. Однако, что становится менее эффективным для небольшой элемент размеры; гигантские перемешать-маска таблицы подстановки не жизнеспособны, и нет никакой поддержкой AVX2 переулок-пересечение перемешать с меньшим, чем 32-разрядные элементы. А 128b PSHUFB версии может все-таки удастся создать маску на лету с BMI2 PEXT/PDEP, как вы можете за поддержкой AVX2 с более крупных элементов, но это сложно, потому что 64-разрядное целое число только занимает 8 байт. Ссылка godbolt на что ответ имеет некоторый код, который может работать на более высоких элементов графов.)


Если задержка ГСЧ, это узкое место, мы могли бы ехать еще быстрее, запустив два вектора генераторов параллельно, чередуя которые мы используем. Компилятор все равно может легко держать все в регистры развернутого цикла, и позволяет две цепочки зависимостей выполняться параллельно.

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


Код: поддержкой AVX2 версия

Полную версию с большим количеством комментариев на Godbolt компилятор проводника.

Не очень аккуратно, извините, я собираюсь идти спать и хотите, чтобы получить это опубликовано.

Чтобы получить поддержкой SSE2 версия, с/_mm256/_mm, с/256/128/, с/v16u/v8u/, и изменение vector_size(32) до 16. Также измените строку прирост от 4*16 до 4*8. (Как я уже сказал, код грязный, а не для составления двух вариантах. Не изначально план по созданию поддержкой AVX2 версии, но тогда мне очень хотелось проверить на процессора Haswell, которые я имел доступ.)

#включить <immintrin.ч>
#включить <запустите.ч>
код #include <stdint.ч>
#включить заголовочный файл <stdio.ч>
//#включить <строка.ч>

// Это будет работать одинаково быстро 128b или 256Б одновременно (поддержкой AVX2):
// https://stackoverflow.com/questions/24001930/avx-sse-version-of-xorshift128
структура rngstate256 {
 __m256i state0;
 __m256i state1;
};

статический встроенный __m256i xorshift128plus_avx2(структура rngstate256 *СП)
{
 __m256i С1 = СП->state0;
 константный __m256i С0 = СП->state1;
 СП->state0 = С0;
 С1 = _mm256_xor_si256(С1, _mm256_slli_epi64(С1, 23));
 __m256i state1new = _mm256_xor_si256(_mm256_xor_si256(_mm256_xor_si256(С1, С0),
 _mm256_srli_epi64(С1, 18)),
 _mm256_srli_epi64(С0, 5));
 СП->state1 = state1new;
 возвращение _mm256_add_epi64(state1new, С0);
}



// Гну с родной векторы давайте компилятор делать такие вещи, как %10 каждый элемент
оператор typedef unsigned краткое v16u __атрибут__((vector_size(32)));

__m256i* vec_store_digit_and_space(__m256i ВМК, __m256i *ограничить п)
{
 v16u в = (v16u)ВМК;
 v16u десять = (v16u)_mm256_set1_epi16(10);

 v16u делитель = (v16u)_mm256_set1_epi16(6554); // метод ceil((2^16-1) / 10.0)
 v16u div6554 = в / делитель; // в принципе энтропии от верхних двух десятичных цифр: 0..65.
 // Вероятно, какая-то корреляция с по модулю значений, особенно dig3, но мы сделаем это вместо
 // dig4 для более ИЛП и меньше инструкции всего.

 v16u dig1 = в % десять;
 в /= десять;
 v16u dig2 = в % десять;
 в /= десять;
 v16u dig3 = в % десять;
 // dig4 будет перекрывать большую часть рандома, что div6554 получает

 константный v16u ascii_digitspace = (v16u)_mm256_set1_epi16( (' '<<8) | '0');

 v16u *vecbuf = (v16u*)п;
 vecbuf[0] = div6554 | ascii_digitspace;
 vecbuf[1] = dig1 | ascii_digitspace;
 vecbuf[2] = dig2 | ascii_digitspace;
 vecbuf[3] = dig3 | ascii_digitspace;
 возврат П + 4; // всегда постоянное количество полных векторов
}


пустота random_decimal_fill_buffer(типа char *ограничить буфер buf, size_t в Лен, структуры rngstate256 *ограничить rngstate)
{
 баф = __строение_считать_выравнивается(баф, 32);

 // скопировать в локальную, так что лязг может хранить состояние в регистре, даже в невстраиваемых версия
 // запретить строительство для ССЗ, но, видимо, лязг до сих пор думает, что *баф может псевдоним *rngstate
 структура rngstate256 rng_local = *rngstate;

 __m256i *ограничить п = (__m256i*ограничить)баф;
 __m256i *ограничить endbuf = (__m256i*)(баф+лен);
 статические неподписанных newline_pos = 0;
 делать {
 __m256i rvec = xorshift128plus_avx2(&rng_local);
 Р = vec_store_digit_and_space(rvec, п); // хранит несколько символов ASCII векторов от энтропии в rvec

#если 1
 // это багги в конце или начале 2 в буфер:
 // обычно там слишком короткие линии, иногда слишком длинные строки
 константный беззнаковый ncols = 100;
 newline_pos += 4*16;
 если (newline_pos >= ncols) {
 newline_pos -= ncols;
 голец *cur_pos = (тип char*)п;
 *(cur_pos - newline_pos*2 - 1) = '\п';
}
#за endif
 // Поворота каждого 100-го места в строки.
 // 1) с перекрытием магазин 1Б на место, которое выбрал счетчик. А счетчик будет эффективнее
 // 2) или, используя другой постоянный для ascii_digitspace поставить перевод строки в одном элементе

 // НОК(200, 16) находится в 400 байт, поэтому отматываем достаточно петли для производства двух полных строк делает полный векторов повторить
 // НОК(200, 32) находится в 800 байт
 // мощности от-2 размер буфера не провести целый ряд линий :/
 // Я уверен, что это может быть решена с низкие накладные расходы, как может быть 10% в худшем случае.
 } при(р <= endbuf-3);

 *rngstate = rng_local;
}



директива #define BUFFER_SIZE (128 * 1024)
константные статические типы size_t bufsz = BUFFER_SIZE;
__атрибут__((выровнены(64))) статический чар static_buf[BUFFER_SIZE];

тап_п(АГДС, типа char *переменной argv[])
{
 // Задачи: подобрать семена правильно. (Не влияет на скорость)
 структура rngstate256 xorshift_state = {
 _mm256_set_epi64x(123, 456, 0x123, 0x456),
 _mm256_set_epi64x(789, 101112, 0x789, 0x101112)
};

 для (int я=0; я < 1024ULL*1024*1024 / bufsz * 100; я++) {
 random_decimal_fill_buffer(static_buf, bufsz, &xorshift_state);
 значение size_t написано = пишите(1, static_buf, bufsz);
(недействительным)письменные;
 //fprintf(stderr, "указанное писал %#ЛК на %#ЛК\п", написано, bufsz);
}

}

Компиляции с помощью GCC, Clang в, или ЕРЦ (или, надеюсь, любой другой компилятор, который понимает Си GNU диалект С99, и Intel встроенные функции). Гну с векторными расширениями являются весьма удобный, чтобы заставить компилятор генерировать магические числа для деления/деления, используя модульный мультипликативными инверсиями, и время от времени __атрибут__с полезным.

Это может быть написан компактно, но это займет больше кода.


Производительность Примечания:

Перекрытия-магазин, чтобы вставить новые строки имеют значительные накладные расходы, чтобы решить, где его разместить (филиал mispredictions, и frontend узкие места на Сердечником2), но сам магазин не имеет никакого влияния на производительность. Комментируя только что инструкция хранить в компиляторе АСМ (оставив все разветвления одинаковые) слева на Сердечником2 абсолютно неизменным, при повторных запусков давая то же время +/- менее 1%. Поэтому я делаю вывод, что магазин буфер / кэш справиться с этим просто отлично.

Все равно, через какое-то вращающееся окно ascii_digitspace с одним элементом, имеющим строки может быть даже быстрее, если мы раскатать достаточно, чтобы любая счетчики/разветвления уходят.


Запись в /dev/null-это в основном пустой, так что буфер, вероятно, остается горячим в кэш L2 (для каждого ядра 256kiB на Haswell). Ожидается, что идеальный ускорения с векторами 128b к 256Б векторов: нет дополнительные инструкции, и все (включая магазины) происходит с удвоенной ширины. Новая строка-вставка ветка хоть и взяты в два раза чаще,. Я, к сожалению, не раз на мой Хасвел под Cygwin установки с той частью конструкции#ifdef, что нужно.

2.5 ГГц * 32Б / 13.7 ГБ/с = циклов 5.84 за поддержкой AVX2-магазине на Haswell. Это очень хорошо, но могло бы быть быстрее. Может быть, есть некоторые накладные расходы в системе с Cygwin звонки, чем я думал. Я не комментирую тех, кто в выходных данных компилятора АСМ (что бы убедиться, что ничего оптимизировать.)

Кэш L1 может поддерживать один магазин 32Б на часы, и Л2 не намного ниже пропускной способности (увеличению задержки, правда).

Когда я посмотрел на МАА несколько версий назад (без ветвления строки, но только в одном формате ASCII вектора на вектор ГСЧ), она предсказывала что-то вроде одного 32Б вектора магазине за 4 или 5 часов.

Я надеялся получить больше производительности извлечения данных из каждого ГСЧ результате, на основе глядя на АСМ себе, считая палочек agner туман руководств и других ресурсов, оптимизация которых я добавил ссылки Для в так для x86 метки.)

Скорее всего, это будет значительно быстрее, на грани реальности, где вектор целочисленных умножения и сдвига может работать в два раза больше портов (Р0 / Р1) по сравнению с Haswell (Р0 только). xorshift и цифра добычи используют много смен и умножается. (Обновление: Richland и Trinity работает на 3.02 МПК, что дает нам 3.77 циклов в 32-байтный поддержкой AVX2 магазине, временный 0.030 сек на 1 ГБ итерации, писать в /dev/нуль на Linux 4.15 на i7-процессор 6700K на частоте 3.9 ГГц.


Он не требует 64-битном режиме, чтобы хорошо работать. С поддержкой SSE2 версия так же быстро, при компиляции с -М32, ведь для этого не нужно очень много векторных регистров, и все 64-разрядные математические делается в векторах, а не регистров общего назначения.

Это на самом деле немного быстрее в 32-разрядном режиме на Сердечником2, потому что сравниваем/филиал макро-слияние работает только в 32-битном режиме, так что меньше uops для вышедших из строя основной (18.3 с (1.85 инструкций за такт) против 16,9 с (2.0 МПК)). Чем меньше код-размер от Рекса префиксы также помогает декодеры Сердечником2 по.

Кроме того, некоторые Рег-Рег вектор движения заменяются нагрузок, поскольку не все больше закрепить константы в векторе рэгс. Поскольку нагрузка на пропускную способность кэш-памяти L1 не является узким местом, это на самом деле помогает. (например, умножения на постоянный вектор набор1(10): movdqa xmm0, xmm10 / pmullw xmm0, xmm1 превращается в movdqa xmm0, [постоянный] / pmullw xmm0, xmm1.) С рег-Рег MOVDQA требуется порт АЛУ, он конкурирует с реальной работой, но нагрузка MOVDQA только конкурирует для декодирования трафика. (Имея 4-байтовый адрес внутри много инструкций и перечеркивает много выгоды от экономии Рекс префиксов.

Я не удивлюсь, если сохранение АЛУ MOVDQA uops, где реальная прибыль идет от них, так как интерфейс должен быть в ногу со средним МПК 2.0 очень хорошо.

Все эти различия исчезают на Haswell, где все это должно работать из декодированного-УГБ кэш, если не буфер шлейфа. Алю+филиал макро-фьюжн работает в обоих режимах с Нихалем.

+81
FieryCod 22 сент. 2016 г., 19:48:08

Допустим, у вас есть две вкладки в окне терминала. Одна из вещей, с ошибка, если я нажмите на левой вкладке, он открывает правильно. Если я нажмите на вкладку справа, он открывает левые вкладки.

Такая же проблема в Xcode.

Когда я заметил этот баг, и если я пытаюсь изменить порядок вкладок путем перетаскивания, в Xcode аварийно завершает работу.

Это трудно объяснить, но если вы видели это, вы знаете это.

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

+56
Consistency 28 июн. 2021 г., 03:00:31

На Android 2.1 Эклер, можно превратить эти клики выключен, перейдя в Настройки > Звук и дисплей:

Прокрутите вниз до слышимого касания тонов и звуковой выбор и снимите оба варианта.

Надеюсь, есть похожие варианты на свой СГС.

+11
Zack Stauber 20 сент. 2019 г., 18:09:09

Показать вопросы с тегом