Перейти к содержимому
Калькуляторы

Выбор ОС + софт под сервер NAT

icc использовать в продакшине ? нет уж, увольте.

Что вы имеете ввиду под "продакшин"?

icc может дать значительный прирост производительности, от 30 до 100% к томуже есть возможность максимально оптимизировать под тот или иной процессор Intel.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

От ее собственной памяти в этих задачах толку мало. Да и можно маскировать эту латентность если подавать данные потоком и избегать branch misprediction.

Фух, это вы теоретически рассказываете, или практически реализовывали какие то примеры? Просто мне, как человеку реально разработавшему не одну вычислительную систему на базе GPU такое рассказывать не стоит. Разберитесь как "оно" работает, поэкспериментируйте... а потом расскажите что там можно маскировать и как избежать branch misprediction.

nag-f - мне сложно, я не обсчитываю математику, и я вообще сначала сисадмин, а потом программер. А вот ребята из Elcomsoft наверное расскажут как можно, уж больно хорошо у них GPU accelerated декрипторы щелкают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

От ее собственной памяти в этих задачах толку мало. Да и можно маскировать эту латентность если подавать данные потоком и избегать branch misprediction.

Фух, это вы теоретически рассказываете, или практически реализовывали какие то примеры? Просто мне, как человеку реально разработавшему не одну вычислительную систему на базе GPU такое рассказывать не стоит. Разберитесь как "оно" работает, поэкспериментируйте... а потом расскажите что там можно маскировать и как избежать branch misprediction.

nag-f - мне сложно, я не обсчитываю математику, и я вообще сначала сисадмин, а потом программер. А вот ребята из Elcomsoft наверное расскажут как можно, уж больно хорошо у них GPU accelerated декрипторы щелкают.

Все зависит от задачи. Есть задачи на которых GPU выигрывает у CPU в 1000, 100 раз, есть которые в 10 раз, а есть задачи на которых GPU будет в разы 10, 100 раз проигрывать CPU...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну а я о чем? Вообще-то некоторые задачи на GPU вообще невозможно сделать, о чем собственно и идет речь. Потому и ищем отдельные задачи, на которых он бы пригодился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу вычислений в GPU смотреть http://www.nvidia.ru/object/cuda_what_is_ru.html , особо обратить внимание на http://www.nvidia.ru/docs/IO/55972/220401_Reprint.pdf - страница 4 правый рисунок, допустим модуль в нетграф, в него поток и пакетики сразу обрабатывают !216! риск процов 1 видюхи(8000 р.) или слай и до 960 процов....

 

jab совершенно верно подметил и во фре, в нетграфе самое место такому решению.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу вычислений в GPU смотреть http://www.nvidia.ru/object/cuda_what_is_ru.html , особо обратить внимание на http://www.nvidia.ru/docs/IO/55972/220401_Reprint.pdf - страница 4 правый рисунок, допустим модуль в нетграф, в него поток и пакетики сразу обрабатывают !216! риск процов 1 видюхи(8000 р.) или слай и до 960 процов....

 

jab совершенно верно подметил и во фре, в нетграфе самое место такому решению.

О.. еще один теоретик. Ребята переходите от теории к эксперименту, такие карты уже массово доступны. Я этой технологией занимаюсь с момента выхода CUDA для G80 на протяжении двух лет.

 

Вы больше времени потратите на пересылку данных из ОЗУ компьютера (в терминах CUDA - host memory) в память карты и обратно. А затем еще узнаете, что такое латнентность в 200-300 тактов при произвольном доступе к вашим "пакетикам" которые явно будут больше 1К и не поместятся в самую быструю регистровую память :), а чудесным образом разместятся в DRAM карты. Карты дают выигрышь только на задачах требующих очень сложных вычислений над числами с плавающей запятой. Где в нетграф присутствуют вычисления с плавающей запятой?

Изменено пользователем nag-f

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

nag-f, а если скажем получение - передачу данных сериализовать + использовать не полные пакеты, а лишь ip заголовки?

И держать правила обработки firewall уже в GPU RAM

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подумал, хотя все равно, секрет цисковских и прочих ASIC-ов именно в очень быстрой памяти SRAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подумал, хотя все равно, секрет цисковских и прочих ASIC-ов именно в очень быстрой памяти SRAM.

Тоже вариант, но очень дорогой. 1-бит статической памяти - это тригер. 1 тригер это... Кеш-яркий пример использования статической памяти в универсальных процессорах. В современнных моделях он занимат половину, а то и больше кристала. Да, доступ к статической памяти осуществляется на частоте CPU, но она слишком дорога.

 

Я бы лучше направил силы на оптимизацию существующих программ под CPU. Либо перешел на специализированные! многоядерные архитектуры. Есть такие, предназначенные для обработки данных при потоках 10G в реальном масштабе времени.

Изменено пользователем nag-f

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А никто это не смотрел?

 

http://www.netfpga.org/

 

Карточка стоит 999$ + пересылка. 4 Гигабитных порта @ wire-speed. Причем это не ASIC, поэтому можно запрограммировать все что угодно. Особенно интересно это

 

http://netfpga.org/wordpress/netfpga-router-kit/

 

Демон просто миррорит ARP и маршруты в NetFPGA. Позволяет получить wire-speed на Linux-е без каких-либо изменений в ядре. :)

 

P.S.: Сам не щупал. Но периодически возникает острое желание. :)

P.P.S.: NAT вроде еще никто не реализовывал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Карточка стоит 999$ + пересылка. 4 Гигабитных порта @ wire-speed. Причем это не ASIC, поэтому можно запрограммировать все что угодно. Особенно интересно это

Не вижу экономической целесообразности. Разве что студней учить программить ASIC, что само по себе бессмысленно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А никто это не смотрел?

 

http://www.netfpga.org/

 

Карточка стоит 999$ + пересылка. 4 Гигабитных порта @ wire-speed. Причем это не ASIC, поэтому можно запрограммировать все что угодно. Особенно интересно это

 

http://netfpga.org/wordpress/netfpga-router-kit/

 

Демон просто миррорит ARP и маршруты в NetFPGA. Позволяет получить wire-speed на Linux-е без каких-либо изменений в ядре. :)

 

P.S.: Сам не щупал. Но периодически возникает острое желание. :)

P.P.S.: NAT вроде еще никто не реализовывал.

Ребята! тут многие на С/С++ программировать не умеют. Интересно, сколько тут ""специалистов"" по VHDL, Verilog :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребята! тут многие на С/С++ программировать не умеют. Интересно, сколько тут ""специалистов"" по VHDL, Verilog :)

Программеру выучить новый язык или framework - дело двух недель... И примерно столько же нужно чтобы забыть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоже вариант, но очень дорогой. 1-бит статической памяти - это тригер. 1 тригер это... Кеш-яркий пример использования статической памяти в универсальных процессорах. В современнных моделях он занимат половину, а то и больше кристала. Да, доступ к статической памяти осуществляется на частоте CPU, но она слишком дорога.

 

Я бы лучше направил силы на оптимизацию существующих программ под CPU. Либо перешел на специализированные! многоядерные архитектуры. Есть такие, предназначенные для обработки данных при потоках 10G в реальном масштабе времени.

Ну насчет существующих это в точку... к примеру Linux - тот же netfilter. Самая банальная проблема - счетчики на правилах firewall, которые не int, а что-то больше. Следовательно неатомарная операция, следовательно лок, следовательно гемморой для SMP и мультипоточной архитектуры.

Но боюсь мои знания для решения тех проблем мягко говоря малодостаточны :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну насчет существующих это в точку... к примеру Linux - тот же netfilter. Самая банальная проблема - счетчики на правилах firewall, которые не int, а что-то больше. Следовательно неатомарная операция, следовательно лок, следовательно гемморой для SMP и мультипоточной архитектуры.

Но боюсь мои знания для решения тех проблем мягко говоря малодостаточны :-)

Это общая проблема, скорость, удобство или стабильность. Я всегда выбираю третье, и этими рамками я сильно ограничен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

jab - вы выбираете компромисс, и то, в чем лучше разбираетесь, как и я.

Стабильность - это откатанная циска с многократным запасом по мощности и тупой рутинг... и куча бабла вброшенная в эту циску.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

jab - вы выбираете компромисс, и то, в чем лучше разбираетесь, как и я.

Стабильность - это откатанная циска с многократным запасом по мощности и тупой рутинг... и куча бабла вброшенная в эту циску.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребята! тут многие на С/С++ программировать не умеют. Интересно, сколько тут ""специалистов"" по VHDL, Verilog :)

Программеру выучить новый язык или framework - дело двух недель... И примерно столько же нужно чтобы забыть.

vhdl и verilog - это не языки программирования и не framework.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А никто это не смотрел?

 

http://www.netfpga.org/

 

Карточка стоит 999$ + пересылка. 4 Гигабитных порта @ wire-speed. Причем это не ASIC, поэтому можно запрограммировать все что угодно. Особенно интересно это

 

http://netfpga.org/wordpress/netfpga-router-kit/

 

Демон просто миррорит ARP и маршруты в NetFPGA. Позволяет получить wire-speed на Linux-е без каких-либо изменений в ядре. :)

 

P.S.: Сам не щупал. Но периодически возникает острое желание. :)

P.P.S.: NAT вроде еще никто не реализовывал.

Был минимальный опыт работы с другим FPGA-комбайном, Virtex-5 OpenSPARC Evaluation Platform. Как для сетевого устройства там много лишнего, но 1000BASE-T и дырка под SFP там есть. Впечатления двоякие: с одной стороны из FPGA делается четырехядерный Opensparc, но с другой с ним Соляра грузится минут сорок (без поддержки сети, с ней было бы дольше). Так что интерес к таким вещам может быть больше академический, хотя Xilinx пиарит:
The Defense-grade Virtex®-5Q family offers the largest selection of reprogrammable devices for mission critical Aerospace & Defense applications.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати SPARC сам по себе редкостный кусок говна. Я сейчас использую Sun T2000 под разработку ПО (тестирую портабельность), это говнище медленнее целерона в однопотоковых приложениях, а стоит как три мощных сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ubench CPU: 2335618

Ubench MEM: 716019

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

Ubench AVG: 1525818

Шина 1333?

gcc44 ( -march=k8 -msse -msse2 -msse3 ) + IPI_PREEMPTION

 

nat'у правда от этого ни жарко, ни холодно. :-)

 

А толку от этого?

Для меня есть толк - это мотивирует на тюнинг системы. :-) Для Вас - никакого толку.

Подскажи пожалуйста, как собрать мир и ядро RELENG_7_2 при помощи gcc44? Уже несколько дней мучаюсь :(

Установил /usr/port/lang/gcc44, прописал в /etc/make.conf:

CC=/usr/local/bin/gcc44
CXX=/usr/local/bin/g++44

При сборке мира:

# cd /usr/src
# chflags -R noschg /usr/obj/usr
# rm -rf /usr/obj/usr
# make cleandir
# make cleandir
# make buildworld
...
CC='/usr/local/bin/gcc44' mkdep -f .depend -a    -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -I/usr/src/gnu/lib/libstdc++ -I/usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++ -I/usr/src/gnu/lib/libstdc++/../../../contrib/gcc -I/usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/include -I/usr/src/gnu/lib/libstdc++/../../../contrib/gcclibs/include -I/usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/include -I.  /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/bitmap_allocator.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/pool_allocator.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/mt_allocator.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/codecvt.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/compatibility.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/complex_io.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ctype.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/debug.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/debug_list.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/functexcept.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/globals_io.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ios.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ios_failure.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ios_init.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ios_locale.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/limits.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/list.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/locale.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/locale_init.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/locale_facets.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/localename.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/stdexcept.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/strstream.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/tree.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/allocator-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/concept-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/fstream-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ext-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ios-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/iostream-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/istream-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/istream.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/locale-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/misc-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/ostream-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/sstream-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/streambuf-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/streambuf.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/string-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/valarray-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/wlocale-inst.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/src/wstring-inst.cc atomicity.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/codecvt_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/collate_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/darwin/ctype_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/messages_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/monetary_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/numeric_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/time_members.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/io/basic_file_stdio.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/generic/c_locale.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/del_op.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/del_opnt.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/del_opv.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/del_opvnt.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_alloc.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_arm.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_aux_runtime.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_call.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_catch.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_exception.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_globals.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_personality.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_term_handler.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_terminate.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_throw.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_type.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/eh_unex_handler.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/guard.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/new_handler.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/new_op.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/new_opnt.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/new_opv.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/new_opvnt.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/pure.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/tinfo.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/tinfo2.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/vec.cc /usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++/vterminate.cc   
/usr/src/gnu/lib/libstdc++/../../../contrib/libstdc++/config/locale/darwin/ctype_members.cc:37:37: error: bits/c++locale_internal.h: No such file or directory
mkdep: compile failed
*** Error code 1

Stop in /usr/src/gnu/lib/libstdc++.
*** Error code 1

Stop in /usr/src/gnu/lib.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

Изменено пользователем devil

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

CXX=/usr/local/bin/g++44

И флаги оптимизаций тоже для хх уберите на умолчальные.

верните в зад что было, должно собратся.

Изменено пользователем Ivan_83

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А смысл ?
Смысл в -march=core2, котороого нет в gcc по умолчанию:

# gcc -v
Using built-in specs.
Target: amd64-undermydesk-freebsd
Configured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 4.2.1 20070719  [FreeBSD]

 

У вас ведь получилось собрать мир и ядро при помощи gcc44:

gcc44 ( -march=k8 -msse -msse2 -msse3 ) + IPI_PREEMPTION
Или я неправильно понял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.