Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Открыть новую тему     Написать ответ в эту тему

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопросы по программированию на C/С++

 
  • Справочники, книги
  • Выбор IDE (среды программирования)
     
    Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

    Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

    Прежде чем просить помощи в задании...
    Если позарез надо и вы даже готовы заплатить

    Как правильно задавать вопросы, если вы хотите получить ответ.

    Полезные ссылки:
    C++(eng)

  • Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 13:37 06-05-2004 | Исправлено: AZJIO, 19:45 12-05-2014
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    можно узнать, почему Вы уверены что в этом именно проблема возникает?

    Приходилось стыкаться вплотную с сокетами под ембеддед системами
     
    Больше вроде как бы негде там затыкаться
     

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 23:20 19-01-2010
    hda0



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX
    почитал про файловые дескрипторы.
    в старых ЮНИКСах было значение 19, далее расширили до нескольких тысяч.
     

    Цитата:
    Файловые дескрипторы могут принимать значения от 0 до OPEN_MAX. Старые версии UNIX имели верхний предел до 19, позволяя одному процессу открывать до 20 файлов. Сейчас это значение увеличено до нескольких тысяч.

    но я не нашел в доке зависимости между дескрипторами и забиванием очереди.
    очередь в радиусе ведь не работает с файлами в ФС?!
     

    Цитата:
    Все открытые файлы ссылаются к ядру через так называемые файловые дескрипторы. Файловый дескриптор — это неотрицательное целое число. Когда мы открываем существующий файл или создаем новый файл, ядро возвращает процессу файловый дескриптор.

     
    или я чё то не так понял?
     
    p.s. вспомнил, что использую в программе аттрибут (Exec-Program) вызова дополнительной проверки внешней программой. т.е. из радиуса идёт вызов внешней программы, написанную тоже на С. Внешняя прога на С отрабатывает и выдаёт результат реактивно.
    может ли вызов внешней программы сказаться на затормаживании очереди?

    Всего записей: 158 | Зарегистр. 28-02-2005 | Отправлено: 11:13 20-01-2010
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    но я не нашел в доке зависимости между дескрипторами и забиванием очереди.  
    очередь в радиусе ведь не работает с файлами в ФС?!

     
    в любом Юниксе работает концепия - every device is a file (будь то проц, память, файл, сокет и т.д)
     
    атрибут файла- файл-дескриптор (или сокет дескриптор и т.д)
     

    Цитата:
    может ли вызов внешней программы сказаться на затормаживании очереди?

    Еще как может
     
    У вас ведь радиус-сервер - одно или мульти-поточен?
    в идеале один клиент -один поток, а сервер только слушает и принимает клиентов, но тут тоже не все просто - если клиентов - много - надо делать пул потоков, а то никаких ресурсов не хватит
    например - пул из 32 потоков - если меньше - каждому по потоку, если больше - ждем на свободную запись в пуле и т.д.

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 11:33 20-01-2010
    hda0



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX

    Цитата:
    У вас ведь радиус-сервер - одно или мульти-поточен?  

    честно, не знаю.  
     

    Цитата:
    например - пул из 32 потоков - если меньше - каждому по потоку, если больше - ждем на свободную запись в пуле и т.д.

    т.е. чисто теоретически:
    замена

    Код:
     
            /*
             *      Close unused file descriptors.
             */
            for (t = 32; t >= 3; t--)
                            close(t);
     

    на

    Код:
     
    #define MAX_SD                  512
    ...
            /*
             *      Close unused file descriptors.
             */
            for (t = MAX_SD; t >= 3; t--)
                            close(t);
     

    способна избавится от текущей проблемы?
     
    з.ы.  
    # sysctl -a|grep file  
    fs.file-nr = 704        0       204753
    fs.file-max = 204753
    т.е. в самой системе дескрипторов выше крыши, хватит на много задач.
     
    з.з.ы. у меня еще вопрос.
    в исходнике нашел такой код:

    Код:
     
            /*  
             *      Receive user requests  
             */
            sin = (struct sockaddr_in *) & saremote;
             
            for(;;) {
     
                    if (need_reload) {
                            reread_config(1);
                            need_reload = 0;
                    }
     
                    FD_ZERO(&readfds);
                    if (acctfd >= 0) {
                            FD_SET(acctfd, &readfds);
                    }
     
                    status = select(32, &readfds, NULL, NULL, NULL);
     

    надо ли тут тоже увеличить значение, заменив на MAX_SD ?

    Всего записей: 158 | Зарегистр. 28-02-2005 | Отправлено: 13:03 20-01-2010 | Исправлено: hda0, 13:49 20-01-2010
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    честно, не знаю.  

    Вопрос поставлен, теперь надо узнать, хотя если цели написать мультипотокового демона нету (и нету знаний язика) - оставляем как есть
     

    Цитата:
    способна избавится от текущей проблемы?

    етот код с close() - вообще как бы профилкатический
     
    а вот етот кусок кода

    Цитата:
      status = select(32, &readfds, NULL, NULL, NULL);

     
    как раз то что надо в первую очередь сменить!
    ето как уже говорил - сердце демона (сервера)
     
    меняем 32 на define и смотрим (еще лучше сделать тест-експеримент - или написать самому радиус клиента или заюзать готовую прогу - кинуть 100..200..500 клиентов на радиус демон - зачем ждать когда свалиться само ))

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 15:30 20-01-2010
    DeDaZar

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток. Помогите пожалуста. Пытаюсь собрать cairo под win32, застопорился на сборке необходимой библиотеки pixman.  
     
    Запускаю сборку через make с параметрами:  
     make -f Makefile.win32 "CFG=release" "MMX=on" "SSE2=on"  
     
    Он проглатывает и рапартует мне:  
    *** No rule to make target 'release/pixman-image.obj', needed by 'release/pixman-1.lib'. Stop  
     
    Платформа win32(vista)  
    библиотека pixman 0.16.2  
     
    Каких ему может нехватать правил?  
    Пытался гуглить по этому вопросу, ни чего стоящего не нашел.  
    Буду рад любой помощи.

    Всего записей: 3 | Зарегистр. 14-10-2007 | Отправлено: 16:47 20-01-2010
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Доброго времени суток. Помогите пожалуста. Пытаюсь собрать cairo под win32, застопорился на сборке необходимой библиотеки pixman.  

     
    линки на сорс в студию
    или ето для телепатов? )))

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 17:02 20-01-2010
    DeDaZar

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не, я думал может кто сталкивался...
    вот ссылки
    http://cairographics.org/end_to_end_build_for_win32/
    http://www.cairographics.org/releases/pixman-0.16.2.tar.gz

    Всего записей: 3 | Зарегистр. 14-10-2007 | Отправлено: 17:09 20-01-2010
    hda0



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX
    сменил 32 везде, где нашел грепом. получилось еще в трёх файлах:
    [root@bill ic019-1]# grep MAX_SD *
    exec.c:         for(n = MAX_SD; n >= 3; n--)
    mysql.c:        for (n = MAX_SD; n >= 3; n--)
    radiusd-acct.c: for (t = MAX_SD; t >= 3; t--)
    radiusd-acct.c:         status = select(MAX_SD, &readfds, NULL, NULL, NULL);
    radiusd-auth.c: for (t = MAX_SD; t >= 3; t--)
    radiusd-auth.c:         status = select(MAX_SD, &readfds, NULL, NULL, NULL);
    radiusd.c:      for (t = MAX_SD; t >= 3; t--)
    radiusd.c:              status = select(MAX_SD, &readfds, NULL, NULL, NULL);
    radiusd.h:#define MAX_SD                        512  
    на счёт exec.c:  и mysql.c: не уверен надо ли было там менять(?), но условие похоже на те что в основных файлах

    Всего записей: 158 | Зарегистр. 28-02-2005 | Отправлено: 21:05 20-01-2010
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hda0
    Нормально
    только надо добавить include на тот файл где определен макрос MAX_SD
     
    что показало тестирование?

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 21:29 20-01-2010
    hda0



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX

    Цитата:
    надо добавить include на тот файл

    не надо, он инклудом стоял уже
    иначе бы не собралось
     

    Цитата:
    что показало тестирование?

    сегодня нагрузку пока выдержало, и то без изменения в строке
     status = select(32, &readfds, NULL, NULL, NULL);  .
    позже я уже сделал фикс и в этой строке.
    на днях попробую спровоцировать массовый обвал - чтобы примерно 120 человек разом ломанулись, и тогда будет видно.

    Всего записей: 158 | Зарегистр. 28-02-2005 | Отправлено: 22:22 20-01-2010
    hda0



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX
    собрал прогу под фс9 и фс12 полёт нормульный
    еще походу собрал под фрибсд 6.4, и за ночь в консольке вылезло:

    Код:
    radiusd-auth in malloc(): error: recursive call
    radiusd-auth in malloc(): error: recursive call
    radiusd-auth in malloc(): error: recursive call
    ....много строк....
    radiusd-auth in malloc(): error: recursive call
     

     
    что это может быть?

    Всего записей: 158 | Зарегистр. 28-02-2005 | Отправлено: 11:31 21-01-2010
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hda0
    Проблема неочевидна
     
    суть (из мана) -  
     
    recursive call  A process has attempted to call an allocation function
         recursively.  This is not permitted.  In particular, signal handlers
         should not attempt to allocate memory.
     
    Очень вероятно что ето проблема в коде (при неких граничных условиях)
    Идея - возможно в коде есть выделение памяти (malloc()) в обработчике сигнала - проверьте так ли ето (сейчас нету исходников под руками).
    В обработчика сигнала, ето не разрешено по моему
    Видимо Федора и Фря по разному обрабатывают такое

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 11:51 21-01-2010
    asi81



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Запутался в элементарном действии.
    Есть строка TCHAR[]. Нужно перевести ее к char[]. Какой функцией это сделать?

    Всего записей: 86 | Зарегистр. 08-06-2009 | Отправлено: 20:07 21-01-2010
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asi81

    Цитата:
    TCHAR: A WCHAR if UNICODE is defined, a CHAR otherwise.

    Так она WCHAR или CHAR?

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:27 21-01-2010
    BednuuStudent

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите плз
    Мне надо подробно  описание всех функций програми
    Подробнее...




    Ээээ а Хелп запретили использовать или ты хочешь, чтобы тебе тут весь хелп повторили?

    Всего записей: 4 | Зарегистр. 20-01-2010 | Отправлено: 22:23 21-01-2010 | Исправлено: ShIvADeSt, 07:29 22-01-2010
    somereal

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BednuuStudent
    у тебя же и так всё описано, что ещё надо? литературное обрамление чтоли?

    Всего записей: 710 | Зарегистр. 20-02-2005 | Отправлено: 23:40 21-01-2010
    KChernov



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    somereal

    Цитата:
    у тебя же и так всё описано, что ещё надо?

    Если вчитаться - прокомментировано криво(по крайней мере для не учебной программы).
     
    BednuuStudent

    Цитата:
    Мне надо подробно  описание всех функций програми  

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

    Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 06:43 22-01-2010
    BednuuStudent

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    мне там надо описание нижних функций там где идут сами функции gauss

    Всего записей: 4 | Зарегистр. 20-01-2010 | Отправлено: 10:51 22-01-2010
    asi81



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    В том и дело что это TCHAR. Причем компилируется в нескольких проектах и с использованием Unicode и без использования. Соответственно без юникода - это char, с юникодом это wchar.   На то он и Tchar чтобы я не думал об этом. Конечно можно тупо самому написать макрос или функцию, что я и сделал, но вообще логика подсказывает, что если введен Tchar, то должны быть и макросы, работающие конкретно с ним.

    Всего записей: 86 | Зарегистр. 08-06-2009 | Отправлено: 12:43 22-01-2010
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru