Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.
Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.
Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.
Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po
… více »Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 216. sraz, který proběhne v pátek 20. února od 18:00 v Red Hat Labu (místnost Q304) na Fakultě informačních technologií VUT v Brně na ulici Božetěchova 1/2. Tématem srazu bude komunitní komunikační síť MeshCore. Jindřich Skácel představí, co je to MeshCore, předvede nejrůznější klientské zařízení a ukáže, jak v praxi vypadá nasazení vlastního repeateru.
Byla vydána nová major verze 9.0 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Hodnota Bitcoinu, decentralizované kryptoměny klesla pod 70 000 dolarů (1,44 milionu korun).
Valve z důvodu nedostatku pamětí a úložišť přehodnocuje plán na vydání zařízení Steam Controller, Steam Machine a Steam Frame: „Cílem tedy stále zůstává vydat všechna tři nová zařízení v první polovině letošního roku, ale přesná data a ceny jsou dvě věci, na kterých usilovně pracujeme a jsme si dobře vědomi toho, jak rychle se v tomto ohledu může vše změnit. Takže ač dnes žádné zveřejnitelné údaje nemáme, hned jak plány finalizujeme, budeme Vás informovat.“
Do 20. února lze hlasovat pro wallpapery pro Ubuntu 26.04 s kódovým názvem Resolute Raccoon.
./msdk-linux-objdump -x ../../../romfs/bin/sthelper | grep NEEDED NEEDED libapmib.so NEEDED libcurl.so.4 NEEDED libm.so.0 NEEDED libjson-c.so.5 NEEDED libpthread.so.0 NEEDED libcrypto.so.1.0.0 NEEDED libc.so.0Všechny tyto sdílené knihovny mají dohromady velikost asi 2,5 MB. V aplikaci využívám vlákna, některá jsou pevně daná, jiná se alokují dynamicky. Každé vlákno nějakým způsobem komunikuje po internetu, většinu času ale spí. Typicky je vláken třeba 6-10. V každém vlákně vytvářím vlastní CURL handle, je to dle příkladu: https://curl.se/libcurl/c/threaded-ssl.html. Používám také zámky pro openssl (crypto.h), které jsem tam popsány. Nikde příliš nemohu najít, jestli by se nedal CURL handle sdílet mezi vlákny, třeba s pomocí curl_easy_setopt(curl, CURLOPT_SHARE, ...). Většinou píšou, že můj postup je správný a každý thread si vytváří a spravuje vlastní CURL handle přes curl_easy_init/curl_easy_cleanup. Můj problém je v tom, že spuštěná aplikace třeba s 8 vlákny si vezme cca 20MB RAM. Pokusy jsem dospěl k poznání, že to je asi závislé jen na počtu otevřených CURL handlů. Je to Embedded zařízení a takové nároky jsou problém. Navíc počet vláken se může v čase zvyšovat (dle informací získaných přes API). Načež mi zbývají třeba 3MB free RAM. Dostat do toho embedded linuxu valgrind a memcheck se mi sice podařilo, ale použít mi nejde, kvůli nedostatku RAM. Následující výpisy možná napoví, pokud je tu někdo, kdo se v tom vyzná...
/ # cat /proc/4870/status Name: sthelper State: S (sleeping) Tgid: 4870 Pid: 4870 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 32 Groups: VmPeak: 24848 kB VmSize: 20944 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 5536 kB VmRSS: 5520 kB VmData: 17248 kB VmStk: 160 kB VmExe: 48 kB VmLib: 3040 kB VmPTE: 48 kB VmSwap: 0 kB Threads: 8 SigQ: 0/160 SigPnd: 00000000000000000000000000000000 ShdPnd: 00000000000000000000000000000000 SigBlk: 00000000000000000000000000000000 SigIgn: 00000000000000000000000000001004 SigCgt: 00000000000000000000000180000002 CapInh: 0000000000000000 CapPrm: 0000001fffffffff CapEff: 0000001fffffffff CapBnd: 0000001fffffffff Cpus_allowed: 1 Cpus_allowed_list: 0 voluntary_ctxt_switches: 1041 nonvoluntary_ctxt_switches: 24Zde je vidět, že nejvíce zabírá VmData. (size of data, stack, and text segments) Tedy předpokládám, že jsou to proměnné, nejspíš ty mé CURL handles. Když nějaká vlákna vykomentuji, náročnost na paměť jde docela dost dolů (cca 3-4MB na vlákno).
/ # cat /proc/4870/maps 00400000-0040c000 r-xp 00000000 1f:01 76 /bin/sthelper 00418000-0041c000 rw-p 00008000 1f:01 76 /bin/sthelper 0041c000-0066c000 rwxp 00000000 00:00 0 [heap] 75fa0000-75fa4000 ---p 00000000 00:00 0 75fa4000-761a0000 rw-p 00000000 00:00 0 [stack:4892] 761a0000-761a4000 ---p 00000000 00:00 0 761a4000-763a0000 rw-p 00000000 00:00 0 [stack:4891] 763a0000-763a4000 ---p 00000000 00:00 0 763a4000-765a0000 rw-p 00000000 00:00 0 [stack:4890] 765a0000-765a4000 ---p 00000000 00:00 0 765a4000-767a0000 rw-p 00000000 00:00 0 [stack:4889] 767a0000-767a4000 ---p 00000000 00:00 0 767a4000-769a0000 rw-p 00000000 00:00 0 [stack:4888] 769a0000-769a4000 ---p 00000000 00:00 0 769a4000-76ba0000 rw-p 00000000 00:00 0 [stack:4885] 76ba0000-76ba4000 ---p 00000000 00:00 0 76ba4000-76da0000 rw-p 00000000 00:00 0 [stack:4879] 76da0000-76dac000 rw-s 00000000 00:04 98307 /SYSV3e0a0239 (deleted) 76dac000-76db8000 rw-s 00000000 00:04 65538 /SYSV3d0a0239 (deleted) 76db8000-76dbc000 r-xp 00000000 1f:01 344 /lib/libdl-0.9.33.so 76dbc000-76dc8000 ---p 00000000 00:00 0 76dc8000-76dcc000 rw-p 00000000 1f:01 344 /lib/libdl-0.9.33.so 76dcc000-76e24000 r-xp 00000000 1f:01 375 /lib/libssl.so.1.0.0 76e24000-76e30000 ---p 00000000 00:00 0 76e30000-76e38000 rw-p 00054000 1f:01 375 /lib/libssl.so.1.0.0 76e38000-76e88000 r-xp 00000000 1f:01 369 /lib/libuClibc-0.9.33.so 76e88000-76e94000 ---p 00000000 00:00 0 76e94000-76e98000 rw-p 0004c000 1f:01 369 /lib/libuClibc-0.9.33.so 76e98000-76e9c000 rw-p 00000000 00:00 0 76e9c000-77014000 r-xp 00000000 1f:01 358 /lib/libcrypto.so.1.0.0 77014000-77020000 ---p 00000000 00:00 0 77020000-77038000 rw-p 00174000 1f:01 358 /lib/libcrypto.so.1.0.0 77038000-7703c000 rw-p 00000000 00:00 0 7703c000-77050000 r-xp 00000000 1f:01 361 /lib/libpthread-0.9.33.so 77050000-7705c000 ---p 00000000 00:00 0 7705c000-77060000 rw-p 00010000 1f:01 361 /lib/libpthread-0.9.33.so 77060000-77064000 rw-p 00000000 00:00 0 77064000-77080000 r-xp 00000000 1f:01 347 /lib/libjson-c.so.5.1.0 77080000-7708c000 ---p 00000000 00:00 0 7708c000-77090000 rw-p 00018000 1f:01 347 /lib/libjson-c.so.5.1.0 77090000-770a8000 r-xp 00000000 1f:01 368 /lib/libm-0.9.33.so 770a8000-770b4000 ---p 00000000 00:00 0 770b4000-770b8000 rw-p 00014000 1f:01 368 /lib/libm-0.9.33.so 770b8000-77130000 r-xp 00000000 1f:01 355 /lib/libcurl.so.4.7.0 77130000-77140000 ---p 00000000 00:00 0 77140000-77144000 rw-p 00078000 1f:01 355 /lib/libcurl.so.4.7.0 77144000-77150000 r-xp 00000000 1f:01 353 /lib/libapmib.so 77150000-7715c000 ---p 00000000 00:00 0 7715c000-7716c000 rw-p 00008000 1f:01 353 /lib/libapmib.so 7716c000-77170000 rw-p 00000000 00:00 0 77170000-77178000 r-xp 00000000 1f:01 348 /lib/ld-uClibc-0.9.33.so 77178000-7717c000 rw-s 00000000 00:04 32769 /SYSV410a0239 (deleted) 7717c000-77180000 rw-s 00000000 00:04 0 /SYSV3c0a0239 (deleted) 77180000-77184000 rw-p 00000000 00:00 0 77184000-77188000 rw-p 00004000 1f:01 348 /lib/ld-uClibc-0.9.33.so 7ff40000-7ff64000 rwxp 00000000 00:00 0 [stack] 7fff4000-7fff8000 r-xp 00000000 00:00 0 [vdso]
/ # cat /proc/4870/statm 1309 345 172 3 0 1088 0
/ # cat /proc/4870/smaps 00400000-0040c000 r-xp 00000000 1f:01 76 /bin/sthelper Size: 48 kB Rss: 48 kB Pss: 48 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 48 kB Private_Dirty: 0 kB Referenced: 48 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me dw 00418000-0041c000 rw-p 00008000 1f:01 76 /bin/sthelper Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me dw ac 0041c000-0066c000 rwxp 00000000 00:00 0 [heap] Size: 2368 kB Rss: 2272 kB Pss: 2272 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 2272 kB Referenced: 2272 kB Anonymous: 2272 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr ex mr mw me ac 75fa0000-75fa4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 75fa4000-761a0000 rw-p 00000000 00:00 0 [stack:4892] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 761a0000-761a4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 761a4000-763a0000 rw-p 00000000 00:00 0 [stack:4891] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 763a0000-763a4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 763a4000-765a0000 rw-p 00000000 00:00 0 [stack:4890] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 765a0000-765a4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 765a4000-767a0000 rw-p 00000000 00:00 0 [stack:4889] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 767a0000-767a4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 767a4000-769a0000 rw-p 00000000 00:00 0 [stack:4888] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 769a0000-769a4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 769a4000-76ba0000 rw-p 00000000 00:00 0 [stack:4885] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 76ba0000-76ba4000 ---p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me ac 76ba4000-76da0000 rw-p 00000000 00:00 0 [stack:4879] Size: 2032 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 76da0000-76dac000 rw-s 00000000 00:04 98307 /SYSV3e0a0239 (deleted) Size: 48 kB Rss: 16 kB Pss: 8 kB Shared_Clean: 0 kB Shared_Dirty: 16 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 16 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr sh mr mw me ms 76dac000-76db8000 rw-s 00000000 00:04 65538 /SYSV3d0a0239 (deleted) Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr sh mr mw me ms 76db8000-76dbc000 r-xp 00000000 1f:01 344 /lib/libdl-0.9.33.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 16 kB Private_Dirty: 0 kB Referenced: 16 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 76dbc000-76dc8000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 76dc8000-76dcc000 rw-p 00000000 1f:01 344 /lib/libdl-0.9.33.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 76dcc000-76e24000 r-xp 00000000 1f:01 375 /lib/libssl.so.1.0.0 Size: 352 kB Rss: 304 kB Pss: 304 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 304 kB Private_Dirty: 0 kB Referenced: 304 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 76e24000-76e30000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 76e30000-76e38000 rw-p 00054000 1f:01 375 /lib/libssl.so.1.0.0 Size: 32 kB Rss: 32 kB Pss: 32 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 32 kB Referenced: 32 kB Anonymous: 32 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 76e38000-76e88000 r-xp 00000000 1f:01 369 /lib/libuClibc-0.9.33.so Size: 320 kB Rss: 304 kB Pss: 22 kB Shared_Clean: 304 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 304 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 76e88000-76e94000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 76e94000-76e98000 rw-p 0004c000 1f:01 369 /lib/libuClibc-0.9.33.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 76e98000-76e9c000 rw-p 00000000 00:00 0 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 76e9c000-77014000 r-xp 00000000 1f:01 358 /lib/libcrypto.so.1.0.0 Size: 1504 kB Rss: 1280 kB Pss: 1280 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 1280 kB Private_Dirty: 0 kB Referenced: 1280 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 77014000-77020000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 77020000-77038000 rw-p 00174000 1f:01 358 /lib/libcrypto.so.1.0.0 Size: 96 kB Rss: 96 kB Pss: 96 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 96 kB Referenced: 96 kB Anonymous: 96 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77038000-7703c000 rw-p 00000000 00:00 0 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7703c000-77050000 r-xp 00000000 1f:01 361 /lib/libpthread-0.9.33.so Size: 80 kB Rss: 80 kB Pss: 80 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 80 kB Private_Dirty: 0 kB Referenced: 80 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 77050000-7705c000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 7705c000-77060000 rw-p 00010000 1f:01 361 /lib/libpthread-0.9.33.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77060000-77064000 rw-p 00000000 00:00 0 Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77064000-77080000 r-xp 00000000 1f:01 347 /lib/libjson-c.so.5.1.0 Size: 112 kB Rss: 112 kB Pss: 112 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 112 kB Private_Dirty: 0 kB Referenced: 112 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 77080000-7708c000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 7708c000-77090000 rw-p 00018000 1f:01 347 /lib/libjson-c.so.5.1.0 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77090000-770a8000 r-xp 00000000 1f:01 368 /lib/libm-0.9.33.so Size: 96 kB Rss: 16 kB Pss: 4 kB Shared_Clean: 16 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 16 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 770a8000-770b4000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 770b4000-770b8000 rw-p 00014000 1f:01 368 /lib/libm-0.9.33.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 770b8000-77130000 r-xp 00000000 1f:01 355 /lib/libcurl.so.4.7.0 Size: 480 kB Rss: 464 kB Pss: 464 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 464 kB Private_Dirty: 0 kB Referenced: 464 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 77130000-77140000 ---p 00000000 00:00 0 Size: 64 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 77140000-77144000 rw-p 00078000 1f:01 355 /lib/libcurl.so.4.7.0 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77144000-77150000 r-xp 00000000 1f:01 353 /lib/libapmib.so Size: 48 kB Rss: 48 kB Pss: 15 kB Shared_Clean: 48 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 48 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me 77150000-7715c000 ---p 00000000 00:00 0 Size: 48 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: mr mw me 7715c000-7716c000 rw-p 00008000 1f:01 353 /lib/libapmib.so Size: 64 kB Rss: 64 kB Pss: 53 kB Shared_Clean: 16 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 48 kB Referenced: 64 kB Anonymous: 48 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7716c000-77170000 rw-p 00000000 00:00 0 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77170000-77178000 r-xp 00000000 1f:01 348 /lib/ld-uClibc-0.9.33.so Size: 32 kB Rss: 32 kB Pss: 1 kB Shared_Clean: 32 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 32 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me dw 77178000-7717c000 rw-s 00000000 00:04 32769 /SYSV410a0239 (deleted) Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr sh mr mw me ms 7717c000-77180000 rw-s 00000000 00:04 0 /SYSV3c0a0239 (deleted) Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr sh mr mw me ms 77180000-77184000 rw-p 00000000 00:00 0 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 77184000-77188000 rw-p 00004000 1f:01 348 /lib/ld-uClibc-0.9.33.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr mr mw me dw ac 7ff40000-7ff64000 rwxp 00000000 00:00 0 [stack] Size: 160 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd wr ex mr mw me gd ac 7fff4000-7fff8000 r-xp 00000000 00:00 0 [vdso] Size: 16 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 16 kB MMUPageSize: 16 kB Locked: 0 kB VmFlags: rd ex mr mw me deNemá někdo zkušenost s libcurl, jestli má můj problém nějaké řešení? Libcurl používám poslední verzi, openssl je 1.0.2d. V pár fórech jsem našel podobné problémy, kdy si lidi stěžovali, že se paměť po curl_easy_cleanup ve vlákně neuvolní. Prý to tak je, a uvolňuje se až po curl_global_cleanup, nicméně ten lze volat pouze 1x při ukončování aplikace. Také do dělám tak, že můj thread je vlastně nekonečná smyčka (reagující jen na ukončovací signál) se sleepem v řádu minut. Thread se vždy probudí, udělá akci přes curl a zase uspí. Vždy v této iteraci volám curl_easy_init a na konci curl_easy_cleanup. Není to tedy tak, že bych curl_easy_init volal jen 1x před smyčkou thredu a při ukončování vlákna pak curl_easy_cleanup. Tuto variantu jsem myslím zkoušel, ale nepřišlo mi, že by se paměťová náročnost lišila. Ještě podotknu, že thready se vykonávají třeba po minutě a paměťová náročnost aplikace je i po mnoha hodinách cca stejná, jako na začátku. Takže ta výsledná náročnost podle mého nesouvisí s memory leeks apod. Budu rád, pokud někoho něco napadne. Děkuji.
Řešení dotazu:
PID PPID USER STAT VSZ %MEM CPU %CPU COMMAND 5020 4876 root S 4912 11.8 0 0.0 curl https://...Tedy to koresponduje s mým poznatkem o paměťové náročnosti na 1 curl handle. Pokud by můj multithread kód šel přepsat na jediný sdílený curl handle, je to řešení. Další možnost, co mě napadá je libcurl kompilovat s nějakým jiným SSL balíkem, na výběr je toho dost (ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl) a jistě by třeba některý mohl být méně náročný. Tady je ale otázka, jestli je to rozežranost curlu jako takového nebo spíš té podpory SSL. Ještě jsem narazil na projekt https://curl.se/tiny/, asi vyzkouším, mohlo by to být také řešení. Zatím díky.
while(isRunning) {
curl_easy_init
//zpracuje a odešle výsledek
curl_easy_cleanup // zde se ale paměť neuvolní
sleep(300)
}
S názorem na HW souhlasím, ale to šéfovi nevysvětlíš, že by za dalších 32 MB RAM musel připlatit $0,5/kusu.
V aplikaci využívám vlákna, některá jsou pevně daná, jiná se alokují dynamicky. Každé vlákno nějakým způsobem komunikuje po internetu, většinu času ale spí. Typicky je vláken třeba 6-10. V každém vlákně vytvářím vlastní CURL handle, je to dle příkladu: https://curl.se/libcurl/c/threaded-ssl.html. Používám také zámky pro openssl (crypto.h), které jsem tam popsány.Čo chceš? Ak chceš mať jednu inštancia = jedno práve realizované sťahovanie. Ak chceš, môžeš to inštanciu použivať pre rôzne URL, ale podmienkou je, že iba jedna sa môže sťahovať v jednom okamihu. Ak nechceš aby príliš dlho trvala (trebars, nechceš aby blokovala frontu, ak nastane nejaká chyba), tak nastav timeout pre curl query (parameter pre curl).
pthread_create(&executorFunction, null);
void executorFunction(void *)
{
for (;;) {
pthread_mutex_lock(&queueLock);
while (queue.isEmpty())
pthread_cond_wait(&queueCond, &queueLock);
task_request *tr = queue.pop();
pthred_mutex_unlock(&queueLock);
(*tr->task)(tr->arg);
pthread_mutext_lock(&tr->lock);
pthread_cond_broadcast(&tr->cond);
pthread_mutext_unlock(&tr->lock);
}
}
void execute(void (*task)(), void *arg)
{
pthread_mutex_lock(&queueLock);
task_request = { function: task, arg: arg, lock: lock, cond: cond };
pthread_mutext_lock(&tr->task->lock);
queue.append(&task_request);
pthread_cond_broadcast(&queueCond, &queueLock);
pthread_cond_wait(&tr->cond, &tr->lock);
pthread_mutext_unlock(&tr->lock);
pthred_mutex_unlock(&queueLock);
}
void myLogicalThread()
{
...
for (;;) {
curl_result result;
execute(&requestCurl, { url: ..., result: &result });
... do something
sleep...
}
}
Jakože rámcově, šlo by to samozřejmě asi o dost chytřeji a celá ta logika by se mohla pouštět radši v jednom schedulovaném threadu (někdo tu řešil nedávno, jak pouštět něco pravidelně, aniž by musel vytvořit spoustu threadů).
Tiskni
Sdílej: