Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.125.171] |
|
Страницы: (3) 1 [2] 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата _lcf_ @ Проблема решается технологией BranchCache.в винде кэшируется только локальная память, с сетевых источником ничего не кэшируется ибо не гарантируется, что файл не был изменен. Краткое описание, взял с хабра: Цитата BranchCache – технология кэширования, встроенная в Windows 7 и Windows Server 2008 R2, и призванная оптимизировать (сократить) сетевой трафик, передаваемый по WAN-каналам связи. Соответственно, основная сфера применения BranchCache – организации с филиалами и удаленными офисами, которые связаны между собой и центральным офисом сравнительно медленными линиями передачи данных. BranchCache поддерживает кэширование HTTP- и SMB-трафика. При этом на клиентских компьютерах должна быть установлена Windows 7 (редакции Ultimate или Enterprise, в других редакциях BranchCache не работает), а на серверах – Windows Server 2008 R2. Таким образом, BranchCache работает только в связке Windows 7 + Windows Server 2008 R2. Глупо это, хранить вообще все в одном исполнительном файле и потом форкаться. Нафиг? По нормальному тогда уж если все с собой тягается, то и форкающийся код стоит вынести в отдельный exe, порождать его форкать на здоровье. А связь с основным exe уж через pipe поддерживать.. В таком случае форкаться будет только то что нужно, весь хлам будет висеть в оперативной памяти, и вдобавок к этому, если еще и не все форкается функцией, не придется заново воссоздавать объекты (там вам виднее, конечно же). |
Сообщ.
#17
,
|
|
|
Fork - это вилка, или разветвление. Я вам привел пример Цитата Олег М @ Насколько я понимаю, линукс, в fork() ничего этого не копирует, а просто увеличивает счётчики или типа того. Windows так не умеет. Все по сути сложнее. Вы же видели пример - текст программы - один но содержит код родителя и код потомка. И когда в коде родителя выполнен форк, с этого момента в системе уже два одновременно работающих процесса. Насчет счетчиков каких таких? В никсах основной процесс имеет свои таблицы файлов. В них много всего. В том числе и сокеты к примеру - они рассматриваются как псевдофайлы. Потомок делает копию таблицы родителя и работает с ней. В примере все четко показано - как родитель уничтожает указатель на сокет в своей таблице, ему с этим сокетом не надо работать. Тогда как у потомка эта запись о сокете остается. В его копии. Ну это про файлы и прочая. Есть много чего еще что копируется в процесс потомка... Почитайте "Управление процессами в UNIX" Р. Стивенса...Классика. |
Сообщ.
#18
,
|
|
|
Цитата Oleg2004 @ Насчет счетчиков каких таких? В никсах основной процесс имеет свои таблицы файлов. В них много всего. В том числе и сокеты к примеру - они рассматриваются как псевдофайлы. Потомок делает копию таблицы родителя и работает с ней. В примере все четко показано - как родитель уничтожает указатель на сокет в своей таблице, ему с этим сокетом не надо работать. Тогда как у потомка эта запись о сокете остается. В его копии. Ну это про файлы и прочая. Есть много чего еще что копируется в процесс потомка... Счётчики использования страниц памяти, использования хэндлов. Т.е. когда ты создаёшь копию процесса, зачем тебе копировать его код? Он read-only, поэтому достаточно увеличить счётчик соответствующих страниц памяти и пользоваться ими. Цитата Oleg2004 @ Fork - это вилка, или разветвление. Я вам привел пример Я знаю как переводится слово fork. Чтобы дублировать процесс, нужно скопировать его код и память и запустить поток. Чтобы этот процесс продолжил работать с того же места нужно ещё скопировать регистры потока. |
Сообщ.
#19
,
|
|
|
Цитата simsergey @ Проблема решается технологией BranchCache. ни черта она не решается, у нас поддержка вынь 7,8 и 10 Цитата simsergey @ Глупо это, хранить вообще все в одном исполнительном файле и потом форкаться. Нафиг? я уже все описывал в теме Олег М, simsergey, Oleg2004 вы можете и дальше за форк ченить поговорить подразумевалось, что конкретно у нас форк не используется, просто так все говорят... |
Сообщ.
#20
,
|
|
|
Цитата _lcf_ @ То есть, почему?ни черта она не решается Единственное, этот компонент надо поставить, он по умолчанию не установлен, и доступен правда не во всех редакциях. |
Сообщ.
#21
,
|
|
|
simsergey
Цитата simsergey @ Таким образом, BranchCache работает только в связке Windows 7 + Windows Server 2008 R2. это раз. хотя может сейчас и есть поддержка новых версий винды. ну а второе, это значит мы своим клиентам должны сказать - ну вы там админов своих пните, чтобы они тулзу какую-то настроили |
Сообщ.
#22
,
|
|
|
Цитата _lcf_ @ Олег М, simsergey, Oleg2004 вы можете и дальше за форк ченить поговорить Да уж нет, увольте. Основная проблема принципиально ясна, и как решить ее вы уже предложили. Одно правда я так и не допонял Ваши юзвери пользуют и винду и никсы? |
Сообщ.
#23
,
|
|
|
Цитата _lcf_ @ ну а второе, это значит мы своим клиентам должны сказать - ну вы там админов своих пните, чтобы они тулзу какую-то настроили Не, ну вы можете им, клиентам, сказать, что это у вашей компании политика такая, чтоб всё тормозило, надо потерпеть. Они поймут. |
Сообщ.
#24
,
|
|
|
Цитата _lcf_ @ Это нормальная практика, выставить системные требования для ОС.ну а второе, это значит мы своим клиентам должны сказать - ну вы там админов своих пните, чтобы они тулзу какую-то настроили С другой стороны - это плата за упрямство держать все в одном .exe, другое дело, как я писал выше, стартовать свою систему, вытаскивать все что есть в память, а там уже стартовать другие свои exe, связываться с ними и т.д., если есть такая необходимость форкать процессы в винде, зная что они не форкаются, а создаются заново. Почему потоки не использовать? Приложению требуется работать в распределенных системах с поддержкой миграции процессов (без поддержки миграции по нодам потоков) ? Впрочем, для вашей задачи я предложил решение - BranchCache, exe будет стартовать из кэша на конечной машине, второй раз. Это в общем-то решение "из коробки", остальное - это переделка вашего кода. Это изначально не ровное решение. |
Сообщ.
#25
,
|
|
|
Цитата Oleg2004 @ Ваши юзвери пользуют и винду и никсы? в основном винда. но есть пользователи кластеров - узлы на никсах, терминалы на винде. разработчики все на никсах (почти). Цитата Олег М @ Они поймут. решение уже реализовано, тут хоть кто-нибудь читать умеет? Добавлено Цитата simsergey @ Почему потоки не использовать? Цитата _lcf_ @ форк так контролируемый, как раз чтобы снизить негативные последствия возможных падений. Цитата simsergey @ остальное - это переделка вашего кода. это несравнимо проще, чем пытаться напрячь людей по всему миру |
Сообщ.
#26
,
|
|
|
Цитата _lcf_ @ решение уже реализовано, тут хоть кто-нибудь читать умеет? Звучит примерно как - мы уже привинтили к своему велосипеду квадратные колёса и нам нужно только чтоб он поехал. Здесь единственным решением скорее всего будет сохранять файл на локальном диске. Как это сделать - другой вопрос. Наверняка есть возможность в обоих системах настроить кэширование файла или какой-нибудь оффлайн доступ для расшаренных папок. Ну и в любом случае что-то придётся настраивать на клиентах. |
Сообщ.
#27
,
|
|
|
Олег М, ну вы явно не читаете что я пишу.
Цитата Олег М @ Здесь единственным решением скорее всего будет сохранять файл на локальном диске. так и сделано. Цитата Олег М @ Как это сделать - другой вопрос. в никсах положен болт, там прекрасно кешируются сетевые данные. для винды проверяется сетевой ли файл (PathIsNetworkPath), если сетевой и номер ревизии не совпадает(он в имени локальном отображен), то тянется на диск. Цитата Олег М @ Ну и в любом случае что-то придётся настраивать на клиентах. ничего не придется. будут папочку темп раз в год чистить. много жалоб будет, будем сами чистить, если файлов больше 5, например. |
Сообщ.
#28
,
|
|
|
Цитата _lcf_ @ его не придется. будут папочку темп раз в год чистить. много жалоб будет, будем сами чистить, если файлов больше 5, например Т.е. проблемы уже нет? |
Сообщ.
#29
,
|
|
|
Цитата _lcf_ @ в основном винда. но есть пользователи кластеров - узлы на никсах, терминалы на винде. разработчики все на никсах (почти). Понятно. Вопросов больше нет... |
Сообщ.
#30
,
|
|
|
в общем да, проблему можно считать решенной. но если найдется способ программно объяснить системе, что неплохо бы кешировать сетевые данные...
но я так понимаю, что это уже задача ФС, как у NFS, например. |