Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Interrupt Affinityについて
Search
Takuya ASADA
June 28, 2014
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Interrupt Affinityについて
Takuya ASADA
June 28, 2014
More Decks by Takuya ASADA
See All by Takuya ASADA
僕のIntel NUCが起動しないわけがない
syuu1228
3
4.5k
Introduction to bhyve
syuu1228
1
460
OSv on bhyve
syuu1228
3
460
ruby-virtualmachine
syuu1228
0
300
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
syuu1228
2
900
10GbE時代のネットワークI/O高速化
syuu1228
14
8.9k
Play with UEFI
syuu1228
1
390
仮想化環境での利用者公平性
syuu1228
0
210
/proc/irq/<IRQ>/ smp_affinity
syuu1228
0
490
Other Decks in Technology
See All in Technology
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
540
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
260
4人目のSREはAgent
tanimuyk
0
150
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
0
120
水を運ぶ人としてのリーダーシップ
izumii19
4
990
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
260
自宅LLMの話
jacopen
1
720
Zenoh on Zephyr on LiteX
takasehideki
2
110
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
240
When Platform Engineering Meets GenAI
sucitw
0
170
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
310
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
2
410
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
A Soul's Torment
seathinner
6
3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Statistics for Hackers
jakevdp
799
230k
How to Talk to Developers About Accessibility
jct
2
250
BBQ
matthewcrist
89
10k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
The browser strikes back
jonoalderson
0
1.3k
Transcript
Interrupt Affinity ʹ͍ͭͯ @syuu1228
Interrupt Affinity? ࠓ࣌ͷී௨ͷ1$ϚϧνίΞͰ͋Δ σόΠε̍ɿ*32̍ɿ$16͍ͬͺ͍ ͱ͍͏ؔʹͳ͍ͬͯΔ σόΠεͲ͜ʹׂΓࠐΜͰ͍Δͷʁ -JOVYͲͷ$16ʹׂΓࠐ·͍ͤͯΔͷʁ ˠ*OUFSSVQU"⒏OJUZ
Interrupt Affinityͷ ϢʔβΠϯλϑΣʔε
$ cat /proc/interrupts CPU0 CPU1 0: 36843 61973 IO-APIC-edge timer
1: 518 591 IO-APIC-edge i8042 8: 1 0 IO-APIC-edge rtc0 9: 387 321 IO-APIC-fasteoi acpi 12: 11236 79 IO-APIC-edge i8042 16: 0 0 IO-APIC-fasteoi uhci_hcd:usb6 17: 12 11 IO-APIC-fasteoi uhci_hcd:usb7 18: 0 0 IO-APIC-fasteoi uhci_hcd:usb8 19: 6531 235 IO-APIC-fasteoi ehci_hcd:usb2 20: 0 0 IO-APIC-fasteoi uhci_hcd:usb3 21: 85 69 IO-APIC-fasteoi uhci_hcd:usb4 22: 0 0 IO-APIC-fasteoi uhci_hcd:usb5 23: 20 15 IO-APIC-fasteoi ehci_hcd:usb1 40: 0 0 PCI-MSI-edge PCIe PME, pciehp 41: 0 0 PCI-MSI-edge PCIe PME, pciehp 42: 0 0 PCI-MSI-edge PCIe PME, pciehp 43: 33199 31756 PCI-MSI-edge ahci 44: 19 1583 PCI-MSI-edge eth0 45: 10 11 PCI-MSI-edge mei 46: 41104 59303 PCI-MSI-edge i915 47: 170268 708 PCI-MSI-edge iwlwifi 48: 78 77 PCI-MSI-edge snd_hda_intel NMI: 1406 1430 Non-maskable interrupts $16ຖͷׂΓࠐΈ౷ܭΛදࣔ /proc/interrupts
/proc/irq/*/smp_affinity ׂΓࠐΈઌ$16܈ΛϏοτͰࢦఆ͢Δ ͱɺࢦఆ͞Εͨ$16܈ʹϥϯυϩϏ ϯͰׂΓࠐ·ΕΔʢϏοτ͕୯ҰͳΒ ৗʹͦͷ$16ׂΓࠐΈʣ # cat /proc/irq/43/smp_affinity 3 #
echo 1 > /proc/irq/43/smp_affinity ͜ΕΛॻ͖͑ΔͱׂΓࠐΈઌ$16͕มΘΔ
LinuxͰͷσϑΥϧτ શ$16ͷϏοτ͕༗ޮʹͳ͓ͬͯΓɺ ͭͷׂΓࠐΈ͕શ$16ϥϯυϩ Ϗϯ͢Δ ϥϯυϩϏϯׂΓࠐΈʹରԠ͠ͳ͍1$ Ͱ͋Δ$16ݻఆతʹׂΓࠐΉ ʢDQV ʣ
/proc/irq/*/smp_affinity_list ώϡʔϚϯϦʔμϒϧͳTNQ@B⒏OJUZ # echo ff > /proc/irq/43/smp_affinity # cat /proc/irq/43/smp_affinity_list
0-7
/proc/irq/*/smp_affinity_hint σόΠευϥΠό͔ΒϢʔβϥϯυσʔ ϞϯʢJSRCBMBODFʣ͜ͷ*32ʹద ͳ$16NBTLΛ௨
irqbalance ඵ͝ͱʹγεςϜෛՙঢ়گΛνΣο Ϋɺ֤*32ͷTNQ@B⒏OJUZΛॻ͖͑ ͯ$16ෛՙΛެฏʹ͢ΔσʔϞϯ POFTIPUϞʔυͰىಈ࣌ʹదͱࢥ ΘΕΔΛTNQ@B⒏OJUZʹઃఆͯ͠ FYJU
MultiQueue NICͷׂΓࠐΈ $16ຖʹૹड৴ΩϡʔɺΩϡʔຖʹ .4*9ׂΓࠐΈΛ࣋ͭ ਖ਼͍͠TNQ@B⒏OJUZݻఆతʹܾ·ͬ ͍ͯΔ ෳ$16ࢄΒͯ͠ͳΒͳ͍ 47: 7602 0
0 0 0 3 23 0 PCI-MSI-edge p1p1-TxRx-0 48: 0 7602 0 0 0 0 13 12 PCI-MSI-edge p1p1-TxRx-1 49: 12 0 7605 0 0 0 10 0 PCI-MSI-edge p1p1-TxRx-2 50: 0 12 0 7602 3 0 10 0 PCI-MSI-edge p1p1-TxRx-3 51: 0 0 12 0 7602 3 10 0 PCI-MSI-edge p1p1-TxRx-4 52: 0 0 0 20 0 7602 13 0 PCI-MSI-edge p1p1-TxRx-5 53: 0 0 0 0 12 0 7612 3 PCI-MSI-edge p1p1-TxRx-6 54: 3 0 0 0 0 13 10 7602 PCI-MSI-edge p1p1-TxRx-7 55: 0 2 0 0 0 0 2 0 PCI-MSI-edge p1p1
ιʔείʔυ QSPDJOUFSSVQUT GTQSPDJOUFSSVQUTD QSPDJSR LFSOFMJSRQSPDD JSRCBMBODF IUUQTHJUIVCDPNJSRCBMBODF JSRCBMBODF
PCΞʔΩςΫνϟʹ͓͚Δ ׂΓࠐΈϧʔςΟϯά
PC্ͷׂΓࠐΈίϯϙʔωϯτ CPU Local APIC CPU Local APIC CPU Local APIC
ICH 8259A PIC Timer I/O APIC Legacy PCI Devices MSI(-X) Capable Devices IPI Legacy PCI 8259A Intr MSI(-X) PCI-LPC bridge SuperIO Chip
Local APIC $16ຖͷׂΓࠐΈίϯτϩʔϥɹׂΓࠐΈΛڐՄɾϚεΫ͠ ͨΓɺ&0*ͨ͠Γ γεςϜશମͰҰҙͳ"1*$*%Λ࣋ͭ ଞͷ-"1*$ׂΓࠐΊΔʢ*1**OUFSQSPDFTTPS*OUFSSVQU CPU Local APIC CPU
Local APIC CPU Local APIC ICH 8259A PIC Timer I/O APIC Legacy PCI Devices MSI(-X) Capable Devices IPI Legacy PCI 8259A Intr MSI(-X) PCI-LPC bridge SuperIO Chip
LAPIC - Interrupt Command Register(ICR) 7FDUPSɿѼઌ-"1*$ͷϕΫλ൪߸ %FMJWFSZ.PEFɿׂΓࠐΈૹϞʔυ %FTUJOBUJPO.PEFɿѼઌϞʔυ %FMJWFS4UBUVTɿલճͷׂΓࠐΈͷૹঢ়گ 5SJHHFS.PEFɿϨϕϧτϦΨʗΤοδτϦΨ
%FTUJOBUJPO4IPSUIBOEɿѼઌͷϚεΫํࣜʢࣗ$16ΛϚεΫɾ ΞϯϚεΫͳͲʣ %FTUJOBUJPO*%ɿѼઌ
ιʔείʔυ *$3 BSDIYJODMVEFBTNJQJI
σʔλγʔτ *OUFMBOE*" "SDIJUFDUVSFT4PGUXBSF %FWFMPQFS.BOVBMT *OUFSSVQU$PNNBOE 3FHJTUFS *$3
ิɿx2APIC -"1*$*%ैདྷCJU͕ͩͬͨɺίΞͷ૿ՃʹΑ ΓϏοτ͕Γͳ͘ͳͬͯ͠·ͬͨͷͰCJU ϏοτΛՃ ͜ΕʹͬͯɺҎ߱Ͱղઆ͢Δ֤ϨδελͰͷׂΓ ࠐΈઌ-"1*$ࢦఆϑΟʔϧυͷΞυϨε෯Ϗοτ Ճ͞Εͨ
σʔλγʔτ *OUFM"SDIJUFDUVSFY"1*$4QFDJpDBUJPO (-044"3:
I/O APIC ݶΒΕͨຊͷཧׂΓࠐΈઢΛ֤1$*σόΠεͰڞ༗ ʢ1$*FʹཧׂΓࠐΈઢແ͘ɺϝοηʔδϯάʹΑͬͯ*0"1*$ܦ༝ׂΓࠐΈΛ ΤϛϡϨʔτʣ ֤*32ΛͲͷ-"1*$సૹ͢Δ͔Λఆٛ͢Δ3FEJSFDUJPO5BCMF ʢ*0"1*$্ͷϨδελ܈ʣΛ࣋ͭ 1$*σόΠε*0"1*$Λ௨ͯ͡-"1*$ׂΓࠐΈϝοηʔδΛૹ৴ CPU Local
APIC CPU Local APIC CPU Local APIC ICH 8259A PIC Timer I/O APIC Legacy PCI Devices MSI(-X) Capable Devices IPI Legacy PCI 8259A Intr MSI(-X) PCI-LPC bridge SuperIO Chip
I/O APIC - REDIR_TBL 7FDUPSɿѼઌ-"1*$ͷϕΫλ൪߸ %FMJWFSZ.PEFɿׂΓࠐΈૹϞʔυ %FTUJOBUJPO.PEFɿѼઌϞʔυ %FMJWFSZ4UBUVTɿલճͷׂΓࠐΈͷૹঢ়گ *OUFSSVQU*OQVU1JO1PMBSJUZɿׂΓࠐΈϐϯͷۃੑ 3FNPUF*33ɿࣗಈతʹ&0*͢Δ͔Ͳ͏͔
5SJHHFS.PEFɿϨϕϧτϦΨʗΤοδτϦΨ .BTLɿׂΓࠐΈϚεΫ %FTUJOBUJPO*%ɿѼઌ
ιʔείʔυ 3&%*3@5#- BSDIYLFSOFMBQJDJP@BQJDD
σʔλγʔτ *OUFM*0$POUSPMMFS)VC *$) 'BNJMZ%BUBTIFFU 3&%*3@5#-3FEJSFDUJPO 5BCMF
ϨΨγσόΠε ϨΨγσόΠε͔ΒͷׂΓࠐΈΛ1$*-1$CSJEHFͰ1$*ม 1$*σόΠεಉ༷ʹ*0"1*$Λ௨ͯ͡-"1*$ׂΓࠐΈϝοηʔ δΛૹ৴ ޓੑͷͨΊ"ʹଓ͞Ε͍ͯΔͱࢥΘΕΔ CPU Local APIC CPU Local
APIC CPU Local APIC ICH 8259A PIC Timer I/O APIC Legacy PCI Devices MSI(-X) Capable Devices IPI Legacy PCI 8259A Intr MSI(-X) PCI-LPC bridge SuperIO Chip
8259A PIC লུʢ·ͩͬͯ·͕͢ɺ͏Θͳ ͍Ͱ͠ΐ͏ʣ
MSI(-X) capable PCI devices ֤σόΠε͕ҙͷͷ*32Λ࣋ͯΔ ֤*32ͷׂΓࠐΈઌ-"1*$1$*σόΠεͷ1$* $POpHVSBUJPO4QBDFʹ࣋ͭ 1$*σόΠε-"1*$ׂΓࠐΈϝοηʔδΛૹ৴ CPU Local
APIC CPU Local APIC CPU Local APIC ICH 8259A PIC Timer I/O APIC Legacy PCI Devices MSI(-X) Capable Devices IPI Legacy PCI 8259A Intr MSI(-X) PCI-LPC bridge SuperIO Chip
MSI Capability on PCI configuration space Device ID Vendor ID
… Reserved Cap. Pointer … Capability x CAP ID(x) Next Pointer … Capability y CAP ID(yy) Next Pointer … MSICTL CAP ID(D0h) Next Pointer MSIAR MSIDR
MSI Capability - MSICTL লུʢ.4*༗ޮɺCJUɺෳׂΓࠐ Έ༗ޮͳͲͷϑΟʔϧυʣ
MSI Capability - MSIAR %FTUJOBUJPO.PEFɿѼઌϞʔυ 3FEJSFDUJPO)JOUɿMPHJDBMNPEFˍ -PX1SJͰͷSFEJSFDUJPOΛ༗ޮԽ %FTUJOBUJPO*%ɿѼઌ
MSI Capability - MSIDR 7FDUPSɿѼઌ-"1*$ͷϕΫλ൪߸ %FMJWFSZ.PEFɿׂΓࠐΈૹϞʔυ %FMJWFSZ4UBUVTɿׂΓࠐΈঢ়گ 5SJHHFS.PEFɿϨϕϧτϦΨʗΤο δτϦΨ
MSI-Xͷ߹ লུʢϑΟʔϧυ͕֦ு͞Εͯࢁׂ ΓࠐΈ͕࣋ͯΔ͕ɺΈಉ͡ʣ
ιʔείʔυ .4* 9 $BQBCJMJUZ BSDIYLFSOFMBQJDJP@BQJDD
σʔλγʔτ *OUFM$IJQTFUBOE*OUFM $IJQTFU .4*$5-.4*$POUSPM 3FHJTUFS .4*"3.4*"EESFTT 3FHJTUFS .4*%3.4*%BUB3FHJTUFS
֤ํࣜͰڞ௨ͳཁૉ ҎԼͷࡾͭͷϑΟʔϧυͰѼઌ͕ࢦఆ ͞ΕΔ %FTUJOBUJPO.PEF %FMJWFSZ.PEF %FTUJOBUJPO*%
ׂΓࠐΈઌͷࢦఆํ๏ 1IZTJDBM%FTUJOBUJPO.PEF %FTUJOBUJPO'JFMEʹ"1*$*%Λࢦఆ ʮৗʹಉ͡$16ׂΓࠐΈʯΛ࣮ݱ -PHJDBM%FTUJOBUJPO.PEF 'MBU.PEFM %FTUJOBUJPO'JFMEͷCJUͰѼઌ-"1*$܈ͷൣғΛදݱ %FMJWFSZ.PEF 'JYFE
ࢦఆൣғͷશͯͷ-"1*$ׂΓࠐΈ -PXFTU1SJPSJUZ ࢦఆൣғͷதͰɺ࠷513ʢ5BTL1SJPSJUZ3FHJTUFSʣͷ͕ ͍$16ׂΓࠐΈ
Logical Destination Mode (Cluster Model) Y"1*$ͷ߹ɺ CJU$MVTUFS*% CJU-PHJDBM*% 'MBU.PEFMʹൺͯଟ͘ͷ$16Λ αϙʔτͰ͖Δ
Lowest Priority Mode ࢦఆൣғͷதͰɺ࠷513ʢ5BTL 1SJPSJUZ3FHJTUFSʣͷ͕͍-"1*$ ׂΓࠐΈ ୠ͠ɺ-JOVYͰಈ࡞தʹ513Λߋ৽͠ͳ ͍ˠશ-"1*$ͷ513શͯಉ͡ ࠷খͷ513Λ࣋ͭ-"1*$͕ෳ͋Δ ߹ϥϯυϩϏϯͰ̍ͭબ
σʔλγʔτ *OUFMBOE*""SDIJUFDUVSFT4PGUXBSF%FWFMPQFS .BOVBMT *OUFSSVQU$PNNBOE3FHJTUFS *$3 1IZTJDBM%FTUJOBUJPO.PEF -PHJDBM%FTUJOBUJPO.PEF -PXFTU1SJPSJUZ%FMJWFSZ.PEF *OUFM"SDIJUFDUVSFY"1*$4QFDJpDBUJPO
-PHJDBM%FTUJOBUJPO3FHJTUFS *OUFM*0$POUSPMMFS)VC *$) 'BNJMZ%BUBTIFFU "VUPNBUJD3PUBUJPO.PEF &RVBM1SJPSJUZ%FWJDFT 4QFDJpD3PUBUJPO.PEF 4QFDJpD1SJPSJUZ
echo 1 > /proc/irq/<IRQ>/ smp_affinityͨ࣌͠ʹԿ͕ى͖Δͷ͔ .4*ͳ1$*FσόΠεͰ͔֬ΊͯΈΔ *OUFM1SP FF 1$*$POpHVSBUJPO4QBDFSPPUͳΒ
TZTCVTQDJ͔ΒಡΊΔ ˠϢʔβϥϯυ͔ΒಡΊΔ ˠ͔ͯ͠͠ɿMTQDJ
# lspci -vvvv -s 00:19.0 00:19.0 Ethernet controller: Intel Corporation
82567LM Gigabit Network Connection (rev 03) Subsystem: Lenovo Device 20ee Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 44 Region 0: Memory at f2600000 (32-bit, non-prefetchable) [size=128K] Region 1: Memory at f2625000 (32-bit, non-prefetchable) [size=4K] Region 2: I/O ports at 1840 [size=32] Capabilities: [c8] Power Management version 2 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME- Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee0300c Data: 41b9 Capabilities: [e0] PCI Advanced Features AFCap: TP+ FLR+ AFCtrl: FLR- AFStatus: TP- Kernel driver in use: e1000e Kernel modules: e1000e ͘ృͬͨॴ͕.4*ͷϑΟʔϧυ͕ͩɺ͜Εͩ ͱಡΊͳ͍ͷͰMTQDJΛGPSLͯ͠.4*ϑΟʔϧ υΛදࣔ͢ΔπʔϧΛ࡞ IUUQTHJTUHJUIVCDPN
# gcc -lpci msireg.c! # ./a.out 00:19.0! Message Signalled Interrupts:
64bit+ Queue=0/0 Enable+! address_hi=0! address_lo=fee0300c dest_mode=logical redirection=lowpri dest_id=3! data=41b9 trigger=edge level=assert delivery_mode=lowpri vector=185 -PHJDBMNPEFͰ-PXQSJɺEFTUJEɺ WFDUPSʹͳ͍ͬͯΔ # echo 1 > /proc/irq/44/smp_affinity! # ./a.out 00:19.0! Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+! address_hi=0! address_lo=fee0100c dest_mode=logical redirection=lowpri dest_id=1! data=41b9 trigger=edge level=assert delivery_mode=lowpri vector=185 EFTU@JE͕ʹॻ͖Θͬͨ
Affinityηοτ࣌ͷΧʔωϧͷڍಈ γεςϜάϩʔόϧͳ%FTUJOBUJPO.PEFͱ %FMJWFSZ.PEFͷઃఆΛอ࣋ ʢBQJDJSR@EFTU@NPEF BQJDJSR@EFMJWFSZ@NPEFʣ "⒏OJUZηοτ࣌ʹ͜ͷΛࢀরɺ%FTUJOBUJPO *%ͱซͤͯॻ͖ࠐΉ OBUJWF@DPNQPTF@NTJ@NTH BSDIYLFSOFMBQJDJP@BQJDD
OSॳظԽ࣌ͷׂΓࠐΈϞʔυઃఆ ڥʹΑͬͯҟͳΔυϥΠόΛ༻ BSDIYLFSOFMBQJDBQJD@qBU@D YBQJD@DMVTUFSD YBQJD@QIZTDʜ BQJD@qBUʢඇYBQJDϞʔυʣ %FMJWFSZ.PEF-PX1SJ %FTUJOBUJPO.PEF-PHJDBM BQJD@QIZTqBUʢඇYBQJDϞʔυ
$164ʣ %FMJWFSZ.PEF'JYFE %FTUJOBUJPO.PEF1IZTJDBM BQJD@YBQJD@QIZTʢYBQJDϞʔυ "$1*Ͱ1IZTJDBMϞʔυࢦఆʣ ಉ্ ϥϯυϩϏϯׂΓࠐΈͰ͖ΔڥҰఆ݅Λຬͨͨ͠߹ͷΈ
*OUFMBOE*""SDIJUFDUVSFT4PGUXBSF %FWFMPQFS.BOVBMT *OUFM*0$POUSPMMFS)VC *$) 'BNJMZ %BUBTIFFU *OUFM"SDIJUFDUVSFY"1*$4QFDJpDBUJPO *OUFM$IJQTFUBOE*OUFM$IJQTFU MJOVY%PDVNFOUBUJPO*32B⒏OJUZUYU 6OEFSTUBOEJOHUIF-JOVY,FSOFM
SE&EJUJPO 1$*-PDBM#VT4QFDJpDBUJPO3FWJTJPO ࢀߟࢿྉ
ࠓ·Ͱʹ·ͱΊͨࢿྉ ࠷ۙͷ1$ΞʔΩςΫνϟʹ͓͚ΔׂΓࠐΈϧʔςΟϯάͷΈ QSPDJSR*32TNQ@B⒏OJUZͷॻ͖͑Ͱ1$*ίϯϑΟάϨʔ γϣϯۭؒͲͷΑ͏ʹॻ͖ΘΔ͔ QSPDJSR*32TNQ@B⒏OJUZ *OUFSSVQUTPOYW ϋΠύʔόΠβͷ࡞ΓํʙͪΌΜͱཧղ͢ΔԾԽٕज़ʙୈ̐ճ* 0ԾԽʮׂΓࠐΈฤɾͦͷ̍ʯ