Saturday, October 13, 2007

Limitasi Memory hanya 1.5GB pada Blender3D oleh Windows

0. You are using Windows 2000, 32bit XP, or 32bit Vista.
1. You are working with complex scenes that take up 1GB RAM or more.
2. You have more than 1GB of physical RAM. If you have less RAM, you'll run into other problems long before you have to worry about this.
3. Blender crashes unexpectedly when the RAM usage reaches about 1.5GB.

This article is NOT for you if:

1. Yours scenes are relatively simple and take up less than 1GB of RAM at any given time.
2. You have very little physical RAM (Less than 1GB).
3. Blender crashes for other reasons, ie unstable video drivers, software conflict...

The problem:

Basically 32bit Windows is designed so that ANY SINGLE application can only utilize up to 2GB of RAM. Realistically, the maximum amount of RAM a program can use before it crashes is around 1.5GB. This does not cause a problem for day-to-day applications because they usually stay well below this limit. But when working with Blender, especially baking fluids, or rendering high resolution images with composite node, memory usage can easily reach 1.5GB+. Without proper configuration, Blender crashes.

View of the Task Manager (Ctrl+Alt+Delete) when blender is in a 'healthy' state.

Remember this is a software limitation due to the design of Windows, you can install 4GB of physical RAM on your computer, and set-aside a 4GB swap file, Blender will still crash at the 1.5GB mark. Thankfully there is a fix for the problem:

The Solution for 32bit Windows:

This is a two step procedure. We will raise the memory limit Windows allocate to each application from the default 2GB to 3GB. This way, our favorite application (blender?) can effectively use about 2.5GB of RAM for itself(a significant increase from the default 1.5GB). And here is how we do that in Windows 2000/XP:

Warning: Editing boot.ini could cause your computer to become unbootable. If you are unsure of what you are doing, do some research before continuing.


Step 1.

1. Right click on My Computer, Click Properties, go to the Advanced tab, click on Settings under Startup and Recovery, click on Edit in the new window that pops up, boot.ini should open in notepad. Now, find the line that looks like this:

multi(0)disk(0)rdisk(0).....="Windows XP" /fastdetect

Append this 5 characters to the end of the line, without the quote:
" /3GB"

With this switch, your computer will allocate 3GB to applications. Reboot your computer for the change to take effect.

For 32bit Vista users only: Setting the '3GB' Flag in 32bit Windows Vista


Step 2: (For all 2000/XP/Vista users)

Find a version of Blender that is compiled with the LAA (Large Address Aware) flag. 'Official' Blender releases are not compiled with LAA. But this one does: Here is the clean Blender 2.45 compiled with the LAA flag. LAA blender requires the /3GB flag to be used, as described above. Without the /3GB flag, LAA blender behaves normally just like any other Blender release.

Step 3: There is no step 3

So that's it. With the above 2 steps, your Blender should be able to render fluids at resolution 500 and render still images at 3200x2400 without any problem. Remember, /3GB and LAA need be used together for this trick to work.


FAQ

Q: I only have 1GB of physical RAM (or less), should I worry about this article?
A: The short answer is no. It is unlikely that you will truly hit the 1.5GB barrier, since the OS takes up some memory as well, by the time Blender is using 1.5GB of RAM, your computer is probably using close to 2GB of total memory, which would be painfully slow (due to the performance hit of using the swap file) that most users would just think their computer has 'froze' and hit the reset button.

Q: What about 64bit Blender?
A: Using the same 32bit LAA Blender 2.45 on 64bit Windows can give you 4GB of available RAM space per application to work with, once 64bit Blender is out, this number will probably go up to 8TB on 64bit Windows.

Q: What about Linux or OS X?
A: To the best of my knowledge, 32bit Linux, has this memory wall at around 3.5GB or so. I am not sure about OS X. (comments would be appreciated) Edit: Thanks Tux Runner

Q: So this fix completely solves the problem?
A: No. To quote jlh on blendernation, this fix just relocates the problem from 1.5GB to 2.5GB and linux will probably not go higher than 2.5GB either. All in all, it boils down to: 32-bit systems are starting to hit their limits. And it's no different with linux. 64bit is a mandatory upgrade once program starts using more than 4GB of memory.

Q: My computer is running funny with the "\3GB" switch
A: The DirectX 9 API has issues with the 3GB flag, thus rarely some older games experience problem when ran under the 3GB flag.

Summary

General memory limits32-bit64-bit
Virtual address space per 32-bit process2 GB, 3 GB if the system is booted with the /3GB switch and application is LAA2 GB, 4 GB if the application is compiled with the /LARGEADDRESSAWARE switch
Virtual address space per 64-bit processNot applicable8 terabytes

Sunday, August 19, 2007

Filter dengan IPTABLES

Iptables merupakan aplikasi untuk administrasi filtering paket dan Network Address Translation (NAT) pada IPv4. Gambaran umum, iptables digunakan untuk konfigurasi, merawat dan memeriksa rules tables (tabel aturan) tentang filter paket IP yang terdapat di kernel linux. Tiap-tiap tables memiliki beberapa built-in (bawaan) chains kernel linux dan chains buatan user sendiri. Setiap chains memiliki list / daftar aturan untuk mencocokkan suatu paket yang datang. Setiap aturan tersebut berfungsi memberikan keputusan eksekusi apa yang akan dilakukan bila paket yang datang cocok dengan aturan yang telah dibuat.

Berikut gambaran dan contoh kegunaan iptables :



Terlihat bahwa komputer A, B dan C mengirim paket data kepada komputer D yang sudah dilengkapi iptables. Pada konfigurasi iptables dibuat pernyataan bahwa hanya paket yang memiliki huruf c yang boleh diterima komputer D, selain itu ditolak semua. Dan hasilnya, hanya komputer C saja yang bisa mengirimkan paket dan diterima komputer D. Tentunya dengan gambaran sederhana ini kita bisa membayangkan kegunaan iptables lebih detail. Misalkan bila ada komputer asing yang mengirimkan paket data untuk keperluan scanning atau hacking maka paket tersebut langsung ditolak oleh komputer kita.

Iptables memiliki 4 tabel aturan yaitu filter, nat, mangle dan raw. Yang akan saya bahas adalah aturan "filter" karena ini yang seringkali digunakan dalam pengaturan jaringan. Kita sudah tahu bahwa pada table terdapat chains (rantai) yang berisi rules / aturan. Namun perlu diketahui tiap table memiliki chains yang berbeda-beda. Chains pada tables "filter" dari 3 fungsi yaitu INPUT, FORWARD dan OUTPUT. INPUT untuk paket yang disiapkan untuk soket lokal atau komputer kita sendiri. FORWARD untuk paket yang diarahkan / routing ke box dan OUTPUT untuk paket yang di generate / dibuat sendiri. Cara gampangnya untuk memahami, chains INPUT berguna untuk mengatasi paket data yang masuk. FORWARD berguna untuk mengalihkan paket yang datang dan OUTPUT berguna untuk menghasilkan paket data yang akan diteruskan nantinya.



Setelah kita mengetahui ketiga fungsi chains tersebut maka kita perlu mengetahui command / perintah dalam konfigurasi iptables. Perlu diketahui bahwa dalam satu chain terdiri dari beberapa rule / aturan. Tiap-tiap aturan tersebut memiliki urutan prioritas tersendiri. Bila ada paket datang maka akan disesuaikan dengan chains. Setelah dikelompokkan maka paket tersebut diseleksi oleh rule yang terdapat pada chain. Bila ada paket datang yang tidak cocok dengan aturan pertama maka akan diteruskan menuju seleksi aturan kedua dan selanjutnya hingga aturan terakhir. Berikut command-command yang umum digunakan :

-A
yaitu append. Memiliki struktur -A [chain] [aturan]. Berfungsi untuk menetapkan aturan ke dalam chains. Contoh : iptables -A INPUT -s 192.168.0.1

-D
yaitu delete aturan. Memiliki struktur -D [chain] [aturan] atau -D [chain] [nomor urutan aturan]. Berfungsi untuk menghapus aturan dari chains atau menghapus aturan berdasarkan urutan list didalam chains. Contoh : iptables -D INPUT 1 ( menghapus aturan pertama dalam chain INPUT )

-I
yaitu insert. Memiliki struktur -I [chain] [nomor urutan aturan] [aturan]. Berfungsi untuk memasukan aturan baru kedalam chain. Bila nomor urutan aturan adalah 1 berarti aturan tersebut dimasukkan ke prioritas utama dalam chain. Contoh : iptables -I OUTPUT 2 -s 192.168.0.1

-R
yaitu replace. Memiliki struktur -R [chain] [nomor urutan aturan] [aturan baru]. Berfungsi untuk menimpa / me-replace aturan lama dengan aturan baru dalam chain. Contoh : iptables -I OUTPUT 2 -s 192.168.0.1 ( menimpa rule kedua dengan rule baru -s 192.168.0.1

-L
yaitu list. Memiliki struktur -L [chain]. Berfungsi untuk menampilkan daftar aturan-aturan didalam chain. Bila chain tidak disertakan maka akan muncul aturan dalam semua chain. Contoh : iptables -L INPUT

-F
yaitu flush. Memiliki struktur -F [chain]. Berfungsi untuk menghilangkan semua aturan pada chain. Contoh: iptables -F FORWARD ( menghapus semua aturan didalam chain FORWARD )

-N
yaitu new. Memiliki struktur -N [chain]. Berfungsi untuk membuat chain baru. Contoh: iptables -N GET

-X
yaitu delete chain. Memiliki struktur -X [chain]. Berfungsi untuk menghapus chain dan ini berbeda dengan -D yang berguna untuk menghapus rule saja. Untuk menghapus chain, dipastikan terlebih dahulu bahwa tidak ada aturan-aturan didalam chain tersebut. Dapat digunakan flush untuk menghapus aturan-aturan di dalam chains, Contoh: iptables -X GET

-E
yaitu rename chain. Memiliki struktur -E [chain lama] [chain baru]. Berfungsi untuk me-rename / mengganti nama chain yang ada didalam iptables. Contoh: iptables -E GET PUT

Setelah kita mengetahui perintah-perintah pada iptables, yang kira perlu pahami berikutnya adalah parameter. Kita melihat contoh perintah "iptables -I OUTPUT 2 -s 192.168.0.1". Disini, -s merupakan parameter. Kegunaan parameter adalah untuk mengidentifikasikan spesifikasi aturan dan digunakan untuk mengikuti perintah umum seperti add, delete, insert, replace dan append.

-p

yaitu menunjukkan protokol. Untuk mengindentifikasikan protokol dalam rule seperti tcp, udp, icmp,dst diperlukan parameter ini.Contoh: iptables -A INPUT -p tcp

-m
yaitu match option. Mirip dengan -p tetapi perbedaannya adalah modul yang digunakan. Bila pada -p menggunakan modul yang bersifat spesifik tetapi berbeda dengan -m. Dengan menggunakan parameter ini, kita bebas menentukan nama module yang dipakai dan meng-variasikannya dalam perintah selanjutnya. Contoh : iptables -A INPUT -s 192.168.0.0/16 -m comment --comment "IP yang di-blok" ( berarti modul comment berisi perintah --comment "IP yang di-blok" )

-s
yaitu source alamat hostname / ip. Contoh : iptables -A INPUT -s 192.168.0.1

-d
yaitu destination / tujuan dari alamat ip. Contoh: iptables -A INPUT -d 192.168.0.2

-j
yaitu jump. Berfungsi untuk memberikan keputusan setelah paket data cocok dengan aturan. Biasanya terdapat di akhir perintah dan diikuti argumen perintah. Contoh : iptables -A INPUT -s 192.168.0.2 -j DROP.

-i
yaitu in-interface alias nama interface yang menerima kiriman paket ( terbatas pada chain INPUT, FORWARD dan PREROUTING saja ). Contoh: iptables -A INPUT -i eth0 -s 192.168.0.2

-o
yaitu out-interface alias nama interface yang akan mengirim paket keluar (terbatas pada chain FORWARD, OUTPUT dan POSTROUTING). Contoh : iptables -A INPUT -o eth1 -s 192.168.0.2

-c
yaitu counter untuk menghitung paket-paket yang lewat dari sebuah aturan. Penulisan parameter ditulis sebelum command semacam APPEND,INSERT,REPLACE,dst. Contoh : iptables -c -A INPUT -s 192.168.0.2

-n
yaitu numeric. Parameter ini akan menampilkan output numeric seperti hostname,ip, port, nama network,dst. Contoh: iptables -L -n

-v
yaitu verbose yang berarti menampilkan informasi secara keseluruhan alias dalam bahasa indonesia terjemahannya "bertele-tele". Contoh: iptables -L -n -v

Sekarang kita sudah mendapatkan gambaran tentang penggunaan berbagai command dalam iptables. Lalu apa yang kurang? Argumen! argumen dibutuhkan untuk menentukan tindakan apa yang akan dilakukan setelah paket tersebut cocok dengan aturan pada iptables. Ada beberapa argument seperti:

ACCEPT,
Menerima paket data yang datang.

DROP
mengesampingkan paket data yang datang dan tidak memberikan reply. Sehingga paket yang datang langsung dibuang begitu saja tanpa memberikan balasan report kepada pengirim paket.

REJECT
menolak paket data yang datang. Berbeda dengan DROP, REJECT mengembalikan kembali paket yang telah dikirimkan tanpa flag / report.

DENY
menolak paket data yang datang dengan memberikan informasi. Berbeda dengan REJECT, DENY akan memberikan flag / informasi kepada pengirim paket bahwa paket yang dikirimkan telah ditolak.

Nah, sekarang kita sudah mendapatkan gambaran umum bagaimana cara konfigurasi iptables. Berikut akan saya sertakan contoh - contohnya:

#membuang (drop) semua kiriman paket dari ip address 192.168.0.1
ehud:~# iptables -A INPUT -s 192.168.0.1 -j DROP

#menerima paket TCP dari range ip address 192.168.0.1 sampai 192.168.0.15
ehud:~# iptables -A INPUT -p TCP -s 192.168.0.1/192.168.0.15 -j ACCEPT

#menolak semua paket ping loopback lokal ( interface yang digunakan adalah lo )
ehud:~# iptables -A INPUT -i lo -p ICMP -j DENY

#melihat list daftar aturan
ehud:~# iptables -L -n -v

selamat mencoba..

Saturday, August 4, 2007

MEMBUAT PARTISI DI SLACKWARE

Ketika pertama kali saya berkenalan dengan Slackware, hal peprtama yag membingungkan adalah pembuatan partisi. Berulangkali saya mencoba menginstall dan tidak pernah berhasil karena kekeliruan dalam pembuatan partisi. Jika distro lain memberikan beberapa pilihan bahkan otomatis dalam hal pembuatan partisi, tidak demikian halnya dengan Slackware. Slackware hanya menyediakan tool partisi yang dapat dilakukan secara manual. Namun menurut saya saat ini sudah cukup mudah dilakukan dengan menggunakan cfdisk atau fdisk yang secara default sudah disediakan oleh Slackware. Disini kita akan menggunakan cfdisk utk mempartisi harddirve. Untuk menggunakannya, ketikkan command cfdisk sehingga menjadi seperti gambar berikut.

Pilih [New] untuk membuat partisi baru. Yang harus anda ketahui adalah untuk bergerak antar menu anda bisa menggunakan panah kiri dan kanan. Sementara untuk bergerak antar partisi menggunakan panah atas dan bawah. Untuk memilih salah satu menu anda harus menggunakan enter.

lalu anda akan diberi pilihan jenis partisi yang akan dibuat. Primary atau Logical. Pilih [Primary].

kemudian tentukan ukuran (dalam MiB) partisi yang akan digunakan berdasarkan free space atau sisa ruang kosong yang tersedia.

langkah selanjutnya anda akan diberi pilihan posisi partisi apakah akan diletakkan di track awal atau di bagian akhir. Pilih saja [Beginning].

partisi pertama sudah anda siapkan dengan nama hda1 sehingga terlihat seperti gambar berikut.

Selanjutnya kita akan membuat partisi berikutnya. Karena GNU/Linux memerlukan minimal dua partisi yaitu partisi root (/) dan swap (semacam virtual memory di windows). Mulailah seperti langkah pembuatan partisi hda1 diatas dengan memilih free space yang masih ada hingga menjadi seperti gambar berikut.

seperti rencana semula bahwa partisi kedua ini akan kita gunakan sebagai swap dimana biasanya partisi ini besarnya adalah kurang lebih dua kali jumlah memory yang terpasang. Untuk itu kita harus mengganti tipe file system hda2 menjadi linux swap. Untuk itu pilih menu [ Type ] seperti gambar berikut.

selanjutnya akan muncul beragam file system (banyak sekali) yang bisa digunakan seperti diperlihatkan gambar berikut. Tekan sembarang tombol jika fyle system yang ada cari sudah/belum ditemukan.

pada gambar diatas kita lihat bahwa linux swap memiliki nomor kode 82, maka pada menu berikutnya masukkan angka 82 sebagaimana gambar berikut.

setelah melalui langkah diatas anda sudah memiliki partisi linux swap sebagaimana ditunjukkan gambar berikut.

langkah selanjutnya adalah memberikan penanda (Flags) pada partisi yang akan kita jadikan sebagai partisi boot (diwindows dikenal sebagai partisi active) yang nantinya akan digunakan sebagai tempat boot system. Pilih hda1 (partisi root) lalu pilih menu [Bootable] sehingga hda1 memiliki flags boot sebagaimana gambar berikut.

langkah berikutnya adalah mengeksekusi konfigurasi partisi yang sudah kita siapkan diatas dengan memilih menu [ Write ]

sehingga akan muncul pilihan iya atau tidak. Untuk melanjutkan proses berikutnya pilih yes, maka proses pembuatan partisi akan berjalan...

jika sudah selesai pilih menu [ Quit ] untuk keluar dari cfdisk.

Selamat.... partisi harddrive anda sudah siap digunakan utuk instalasi Slackware atau distribusi GNU/Linux lainnya.

Catatan :

  • Apabila anda membuat partisi tidak lebih dari empat partisi anda bisa membuat seluruh partisi sebagai primary partition sementara apabila sudah lebih dari 4, partisi ke 4 dan seterusnya haruslah logical.

  • Anda juga harus menentukan satu partisi sebagai bootable partition. Biasanya yang di set bootable partition adalah root partition.

  • Untuk swap anda bisa mempergunakan maksimal dua kali besar memori yang terpasang di komputer anda apabila memori yang anda miliki kurang dari 512 MiB. Apabila RAM yang anda miliki sudah lebih dari 512 MiB anda cukup membuat swap sebesar RAM yang anda miliki.

  • Partisi minimal yang harus anda buat untuk bisa berhasil menginstall slackware atau distriibusi GNU/Linux lainnya adalah dua partisi yaitu root ( / ) dan swap